You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by mm...@apache.org on 2022/01/03 12:07:10 UTC
[syncope] branch master updated: Remove CGLib proxies from Spring configuration components - part 1 (#301)
This is an automated email from the ASF dual-hosted git repository.
mmoayyed pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 273ca7b Remove CGLib proxies from Spring configuration components - part 1 (#301)
273ca7b is described below
commit 273ca7bf2608ba53e3c9594068a6416e0c31622b
Author: Misagh Moayyed <mm...@gmail.com>
AuthorDate: Mon Jan 3 16:07:02 2022 +0400
Remove CGLib proxies from Spring configuration components - part 1 (#301)
---
.github/workflows/codeql-analysis.yml | 2 +-
.github/workflows/crosschecks.yml | 2 +-
.github/workflows/fit_Elasticsearch.yml | 2 +-
.github/workflows/fit_Payara.yml | 2 +-
.github/workflows/fit_Tomcat_H2_JSON.yml | 2 +-
.github/workflows/fit_Tomcat_H2_XML.yml | 2 +-
.github/workflows/fit_Tomcat_H2_YAML.yml | 2 +-
.github/workflows/fit_WA_SAML2PS4UI_OIDCC4UI.yml | 2 +-
.github/workflows/fit_WA_SRA_CASClient.yml | 4 +-
.github/workflows/fit_WA_SRA_OAuth2.yml | 2 +-
.github/workflows/fit_WA_SRA_OIDC.yml | 2 +-
.github/workflows/fit_WA_SRA_SAML2.yml | 2 +-
.github/workflows/fit_Wildfly.yml | 2 +-
.github/workflows/fit_Zookeeper.yml | 2 +-
.github/workflows/mariadb.yml | 2 +-
.github/workflows/mysql.yml | 2 +-
.github/workflows/postgresql.yml | 2 +-
.../client/console/SyncopeAMConsoleContext.java | 2 +-
.../client/console/SyncopeIdMConsoleContext.java | 2 +-
.../syncope/client/console/SecurityConfig.java | 44 +-
.../client/console/SyncopeConsoleApplication.java | 17 +-
.../console/src/main/resources/console.properties | 5 +
.../syncope/client/console/AbstractTest.java | 2 +-
.../syncope/client/enduser/SecurityConfig.java | 44 +-
.../client/enduser/SyncopeEnduserApplication.java | 16 +-
.../actuate/SyncopeEnduserInfoContributor.java | 8 +-
.../enduser/src/main/resources/enduser.properties | 5 +
.../syncope/client/enduser/AbstractTest.java | 2 +-
.../client/zookeeper/ZookeeperConfParamOps.java | 8 +-
.../zookeeper/ZookeeperKeymasterClientContext.java | 12 +-
.../client/zookeeper/ZookeeperTestContext.java | 2 +-
.../client/self/SelfKeymasterClientContext.java | 24 +-
.../apache/syncope/core/logic/AMLogicContext.java | 74 ++--
.../syncope/core/rest/cxf/AMRESTCXFContext.java | 17 +-
.../apache/syncope/core/logic/IdMLogicContext.java | 73 ++--
.../syncope/core/logic/IdMLogicTestContext.java | 5 +-
.../syncope/core/rest/cxf/IdMRESTCXFContext.java | 7 +-
.../syncope/core/logic/IdRepoLogicContext.java | 244 +++++------
.../core/rest/cxf/IdRepoRESTCXFContext.java | 103 ++---
.../rest/cxf/service/IdRepoRESTCXFTestContext.java | 7 +-
.../persistence/jpa/JPAJSONPersistenceContext.java | 5 +-
.../jpa/MyJPAJSONPersistenceContext.java | 4 -
.../jpa/PGJPAJSONPersistenceContext.java | 4 -
.../syncope/core/persistence/jpa/MasterDomain.java | 44 +-
.../core/persistence/jpa/PersistenceContext.java | 61 +--
.../persistence/jpa/PersistenceTestContext.java | 5 +-
.../provisioning/java/ProvisioningContext.java | 202 +++++----
.../provisioning/java/ProvisioningTestContext.java | 5 +-
.../syncope/core/starter/SelfKeymasterContext.java | 24 +-
.../core/spring/security/AuthContextUtils.java | 3 +-
.../core/spring/security/SecurityContext.java | 55 +--
.../core/spring/security/WebSecurityContext.java | 104 ++---
.../core/spring/SpringTestConfiguration.java | 2 +-
.../syncope/core/starter/SwaggerUIInitializer.java | 2 +-
.../core/starter/SyncopeCoreApplication.java | 161 +++++++-
...java => DefaultSyncopeCoreInfoContributor.java} | 240 ++++++-----
.../actuate/SyncopeCoreInfoContributor.java | 451 +--------------------
core/starter/src/main/resources/core.properties | 6 +
.../core/workflow/java/WorkflowContext.java | 6 +-
.../syncope/core/logic/CamelLogicContext.java | 19 +-
.../persistence/jpa/CamelPersistenceContext.java | 2 +-
.../camel/CamelProvisioningContext.java | 8 +-
.../camel/component/PropagateComponent.java | 8 +-
.../syncope/core/rest/cxf/CamelRESTCXFContext.java | 4 +-
.../client/ElasticsearchClientContext.java | 5 +-
.../jpa/ElasticsearchPersistenceContext.java | 5 +-
.../core/flowable/FlowableWorkflowContext.java | 53 +--
.../syncope/core/logic/FlowableLogicContext.java | 44 +-
.../core/rest/cxf/FlowableRESTCXFContext.java | 6 +-
.../syncope/core/logic/OIDCC4UILogicContext.java | 14 +-
.../syncope/core/logic/OIDCC4UIProviderLogic.java | 2 +-
.../jpa/OIDCC4UIPersistenceContext.java | 2 +-
.../java/data/OIDCC4UIProvisioningContext.java | 4 +-
.../core/rest/cxf/OIDCC4UIRESTCXFContext.java | 5 +-
.../syncope/core/logic/SAML2SP4UILogicContext.java | 19 +-
.../jpa/SAML2SP4UIPersistenceContext.java | 2 +-
.../java/SAML2SP4UIProvisioningContext.java | 4 +-
.../core/rest/cxf/SAML2SP4UIRESTCXFContext.java | 5 +-
.../syncope/core/logic/SCIMLogicContext.java | 6 +-
.../syncope/core/rest/cxf/SCIMRESTCXFContext.java | 4 +-
.../ext/scimv2/cxf/SCIMv2RESTCXFContext.java | 23 +-
.../buildtools/SyncopeBuildToolsApplication.java | 18 +-
.../reference/flowable/AssignDirectorGroup.java | 14 +-
.../reference/flowable/CreateARelationship.java | 14 +-
.../reference/flowable/FlowableConfiguration.java | 31 +-
.../reference/flowable/PrintersValueProvider.java | 10 +-
.../fit/core/reference/CoreReferenceContext.java | 6 +-
fit/core-reference/src/main/resources/log4j2.xml | 1 -
.../syncope/fit/console/AbstractConsoleITCase.java | 2 +-
.../org/apache/syncope/fit/core/CoreITContext.java | 2 +-
.../syncope/fit/enduser/AbstractEnduserITCase.java | 2 +-
fit/wa-reference/src/main/resources/log4j2.xml | 2 +-
fit/wa-reference/src/test/resources/log4j2.xml | 6 +-
.../org/apache/syncope/sra/SecurityConfig.java | 116 ++++--
.../java/org/apache/syncope/sra/SessionConfig.java | 2 +-
.../apache/syncope/sra/SyncopeSRAApplication.java | 51 ++-
.../syncope/sra/SyncopeSRAWebExceptionHandler.java | 14 +-
.../syncope/sra/security/CsrfRouteMatcher.java | 10 +-
.../syncope/sra/security/LogoutRouteMatcher.java | 2 -
.../syncope/sra/security/PublicRouteMatcher.java | 2 -
...cClientInitiatedServerLogoutSuccessHandler.java | 6 +-
sra/src/main/resources/sra.properties | 5 +
.../bootstrap/SyncopeWABootstrapConfiguration.java | 2 -
.../syncope/wa/starter/SyncopeWAApplication.java | 20 +-
.../starter/actuate/SyncopeWAInfoContributor.java | 8 +-
.../wa/starter/config/SyncopeWAConfiguration.java | 29 +-
.../starter/config/SyncopeWARefreshContextJob.java | 2 +-
.../metadata/RestfulSamlIdPMetadataGenerator.java | 6 +-
wa/starter/src/main/resources/wa.properties | 5 +
109 files changed, 1129 insertions(+), 1646 deletions(-)
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index cb00413..4c05279 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -18,7 +18,7 @@ name: "CodeQL"
on:
push:
- branches: [master,2_1_X]
+ branches: [master,2_1_X,pr-*]
pull_request:
# The branches below must be a subset of the branches above
branches: [master,2_1_X]
diff --git a/.github/workflows/crosschecks.yml b/.github/workflows/crosschecks.yml
index a7cddba..7e79fca 100644
--- a/.github/workflows/crosschecks.yml
+++ b/.github/workflows/crosschecks.yml
@@ -18,7 +18,7 @@ name: "Cross Checks"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Elasticsearch.yml b/.github/workflows/fit_Elasticsearch.yml
index 9f889b8..689c2b5 100644
--- a/.github/workflows/fit_Elasticsearch.yml
+++ b/.github/workflows/fit_Elasticsearch.yml
@@ -18,7 +18,7 @@ name: "FIT Elasticsearch"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Payara.yml b/.github/workflows/fit_Payara.yml
index ef04e09..5f65c0c 100644
--- a/.github/workflows/fit_Payara.yml
+++ b/.github/workflows/fit_Payara.yml
@@ -18,7 +18,7 @@ name: "FIT Payara"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Tomcat_H2_JSON.yml b/.github/workflows/fit_Tomcat_H2_JSON.yml
index 02b1b31..0dbb9ca 100644
--- a/.github/workflows/fit_Tomcat_H2_JSON.yml
+++ b/.github/workflows/fit_Tomcat_H2_JSON.yml
@@ -18,7 +18,7 @@ name: "FIT Tomcat H2 JSON"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Tomcat_H2_XML.yml b/.github/workflows/fit_Tomcat_H2_XML.yml
index d069168..ca727db 100644
--- a/.github/workflows/fit_Tomcat_H2_XML.yml
+++ b/.github/workflows/fit_Tomcat_H2_XML.yml
@@ -18,7 +18,7 @@ name: "FIT Tomcat H2 XML"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Tomcat_H2_YAML.yml b/.github/workflows/fit_Tomcat_H2_YAML.yml
index 422e2f0..c0622fd 100644
--- a/.github/workflows/fit_Tomcat_H2_YAML.yml
+++ b/.github/workflows/fit_Tomcat_H2_YAML.yml
@@ -18,7 +18,7 @@ name: "FIT Tomcat H2 YAML"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_WA_SAML2PS4UI_OIDCC4UI.yml b/.github/workflows/fit_WA_SAML2PS4UI_OIDCC4UI.yml
index 3795aef..a1519ce 100644
--- a/.github/workflows/fit_WA_SAML2PS4UI_OIDCC4UI.yml
+++ b/.github/workflows/fit_WA_SAML2PS4UI_OIDCC4UI.yml
@@ -18,7 +18,7 @@ name: "FIT WA SAML2SP4UI OIDCC4UI"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_WA_SRA_CASClient.yml b/.github/workflows/fit_WA_SRA_CASClient.yml
index 5966e7c..a229757 100644
--- a/.github/workflows/fit_WA_SRA_CASClient.yml
+++ b/.github/workflows/fit_WA_SRA_CASClient.yml
@@ -18,7 +18,7 @@ name: "FIT WA SRA CASClient"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
@@ -43,5 +43,7 @@ jobs:
restore-keys: ${{ runner.os }}-m2
- name: Build
run: mvn -U -T 1C -P 'skipTests,all'
+# - name: Setup tmate session
+# uses: mxschmitt/action-tmate@v3
- name: 'WA / SRA / CAS Client'
run: mvn -f fit/wa-reference/pom.xml verify -Dinvoker.streamLogs=true -Dmodernizer.skip=true -Drat.skip=true -Dcheckstyle.skip=true -Djacoco.skip=true -Dit.test=org.apache.syncope.fit.sra.CASSRAITCase
diff --git a/.github/workflows/fit_WA_SRA_OAuth2.yml b/.github/workflows/fit_WA_SRA_OAuth2.yml
index ad9f317..a08434c 100644
--- a/.github/workflows/fit_WA_SRA_OAuth2.yml
+++ b/.github/workflows/fit_WA_SRA_OAuth2.yml
@@ -18,7 +18,7 @@ name: "FIT WA SRA OAuth2"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_WA_SRA_OIDC.yml b/.github/workflows/fit_WA_SRA_OIDC.yml
index 540cec3..a306d11 100644
--- a/.github/workflows/fit_WA_SRA_OIDC.yml
+++ b/.github/workflows/fit_WA_SRA_OIDC.yml
@@ -18,7 +18,7 @@ name: "FIT WA SRA OIDC"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_WA_SRA_SAML2.yml b/.github/workflows/fit_WA_SRA_SAML2.yml
index 1086845..503c5a3 100644
--- a/.github/workflows/fit_WA_SRA_SAML2.yml
+++ b/.github/workflows/fit_WA_SRA_SAML2.yml
@@ -18,7 +18,7 @@ name: "FIT WA SRA SAML2"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Wildfly.yml b/.github/workflows/fit_Wildfly.yml
index 8177f53..7aec478 100644
--- a/.github/workflows/fit_Wildfly.yml
+++ b/.github/workflows/fit_Wildfly.yml
@@ -18,7 +18,7 @@ name: "FIT Wildfly"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/fit_Zookeeper.yml b/.github/workflows/fit_Zookeeper.yml
index e7bf993..877aa92 100644
--- a/.github/workflows/fit_Zookeeper.yml
+++ b/.github/workflows/fit_Zookeeper.yml
@@ -18,7 +18,7 @@ name: "FIT Zookeeper"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/mariadb.yml b/.github/workflows/mariadb.yml
index 5d4e1c2..6e64c87 100644
--- a/.github/workflows/mariadb.yml
+++ b/.github/workflows/mariadb.yml
@@ -18,7 +18,7 @@ name: "MariaDB"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/mysql.yml b/.github/workflows/mysql.yml
index 38d21e1..2d39bde 100644
--- a/.github/workflows/mysql.yml
+++ b/.github/workflows/mysql.yml
@@ -18,7 +18,7 @@ name: "MySQL"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/.github/workflows/postgresql.yml b/.github/workflows/postgresql.yml
index 6c87300..3d7aef3 100644
--- a/.github/workflows/postgresql.yml
+++ b/.github/workflows/postgresql.yml
@@ -18,7 +18,7 @@ name: "PostgreSQL"
on:
push:
- branches: [master]
+ branches: ['master', 'pr-*']
pull_request:
# The branches below must be a subset of the branches above
branches: [master]
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java b/client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java
index e3ff01a..b5b3552 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java
+++ b/client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java
@@ -27,7 +27,7 @@ import org.apache.syncope.client.console.init.ClassPathScanImplementationContrib
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SyncopeAMConsoleContext {
@Bean
diff --git a/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java b/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java
index 15b3e07..bafd990 100644
--- a/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java
+++ b/client/idm/console/src/main/java/org/apache/syncope/client/console/SyncopeIdMConsoleContext.java
@@ -39,7 +39,7 @@ import org.apache.syncope.client.console.commons.AnyDirectoryPanelAdditionalActi
import org.apache.syncope.client.console.init.ClassPathScanImplementationContributor;
import org.apache.syncope.client.console.init.IdMClassPathScanImplementationContributor;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SyncopeIdMConsoleContext {
@Bean
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java
index a77f5cc..86a5e39 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SecurityConfig.java
@@ -19,8 +19,8 @@
package org.apache.syncope.client.console;
import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -28,27 +28,29 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
-@Configuration
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
+@Configuration(proxyBeanMethods = false)
+public class SecurityConfig {
- @Autowired
- private ConsoleProperties props;
+ @Bean
+ public WebSecurityConfigurerAdapter consoleSecurityConfigAdapter(final ConsoleProperties props) {
+ return new WebSecurityConfigurerAdapter() {
+ @Override
+ protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
+ auth.inMemoryAuthentication().
+ withUser(props.getAnonymousUser()).
+ password("{noop}" + props.getAnonymousKey()).
+ roles(IdRepoEntitlement.ANONYMOUS);
+ }
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication().
- withUser(props.getAnonymousUser()).
- password("{noop}" + props.getAnonymousKey()).
- roles(IdRepoEntitlement.ANONYMOUS);
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- http.csrf().disable().
- authorizeRequests().
- requestMatchers(EndpointRequest.toAnyEndpoint()).
- authenticated().
- and().
- httpBasic();
+ @Override
+ protected void configure(final HttpSecurity http) throws Exception {
+ http.csrf().disable().
+ authorizeRequests().
+ requestMatchers(EndpointRequest.toAnyEndpoint()).
+ authenticated().
+ and().
+ httpBasic();
+ }
+ };
}
}
diff --git a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
index 4348523..9ee4764 100644
--- a/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
+++ b/client/idrepo/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
@@ -50,7 +50,6 @@ import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStart;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStop;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
@@ -63,7 +62,7 @@ import org.springframework.context.annotation.Bean;
@SpringBootApplication(exclude = {
ErrorMvcAutoConfiguration.class,
- HttpMessageConvertersAutoConfiguration.class })
+ HttpMessageConvertersAutoConfiguration.class }, proxyBeanMethods = false)
@EnableConfigurationProperties(ConsoleProperties.class)
public class SyncopeConsoleApplication extends SpringBootServletInitializer {
@@ -73,15 +72,6 @@ public class SyncopeConsoleApplication extends SpringBootServletInitializer {
build().run(args);
}
- @Autowired
- private ServiceOps serviceOps;
-
- @Autowired
- private ConsoleProperties props;
-
- @Autowired
- private ApplicationContext ctx;
-
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
return builder.properties(Map.of(
@@ -97,7 +87,8 @@ public class SyncopeConsoleApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean
@Bean
- public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator() {
+ public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator(final ServiceOps serviceOps,
+ final ConsoleProperties props) {
return new SyncopeCoreHealthIndicator(
serviceOps,
props.getAnonymousUser(),
@@ -113,7 +104,7 @@ public class SyncopeConsoleApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean(name = "classPathScanImplementationLookup")
@Bean
- public ClassPathScanImplementationLookup classPathScanImplementationLookup() {
+ public ClassPathScanImplementationLookup classPathScanImplementationLookup(final ApplicationContext ctx) {
ClassPathScanImplementationLookup lookup = new ClassPathScanImplementationLookup(
ctx.getBeansOfType(ClassPathScanImplementationContributor.class).values());
lookup.load();
diff --git a/client/idrepo/console/src/main/resources/console.properties b/client/idrepo/console/src/main/resources/console.properties
index 723e8e3..41407e7 100644
--- a/client/idrepo/console/src/main/resources/console.properties
+++ b/client/idrepo/console/src/main/resources/console.properties
@@ -71,3 +71,8 @@ console.security-headers.Strict-Transport-Security=max-age=31536000; includeSubD
console.security-headers.X-Content-Type-Options=nosniff
console.security-headers.X-Frame-Options=sameorigin
#console.security-headers.Content-Security-Policy=default-src https:
+
+##
+# Disable CGLib Proxies
+spring.aop.auto=true
+spring.aop.proxy-target-class=false
diff --git a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
index a3d45e2..f33eb5f 100644
--- a/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
+++ b/client/idrepo/console/src/test/java/org/apache/syncope/client/console/AbstractTest.java
@@ -85,7 +85,7 @@ import org.springframework.context.annotation.Configuration;
public abstract class AbstractTest {
@ImportAutoConfiguration
- @Configuration
+ @Configuration(proxyBeanMethods = false)
public static class SyncopeConsoleWebApplicationTestConfig {
@Bean
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java
index a9537a6..38e6e6a 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SecurityConfig.java
@@ -19,8 +19,8 @@
package org.apache.syncope.client.enduser;
import org.apache.syncope.common.lib.types.IdRepoEntitlement;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -28,27 +28,29 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@EnableWebSecurity
-@Configuration
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
+@Configuration(proxyBeanMethods = false)
+public class SecurityConfig {
- @Autowired
- private EnduserProperties props;
+ @Bean
+ public WebSecurityConfigurerAdapter enduserSecurityAdapter(final EnduserProperties props) {
+ return new WebSecurityConfigurerAdapter() {
+ @Override
+ protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
+ auth.inMemoryAuthentication().
+ withUser(props.getAnonymousUser()).
+ password("{noop}" + props.getAnonymousKey()).
+ roles(IdRepoEntitlement.ANONYMOUS);
+ }
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication().
- withUser(props.getAnonymousUser()).
- password("{noop}" + props.getAnonymousKey()).
- roles(IdRepoEntitlement.ANONYMOUS);
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- http.csrf().disable().
- authorizeRequests().
- requestMatchers(EndpointRequest.toAnyEndpoint()).
- authenticated().
- and().
- httpBasic();
+ @Override
+ protected void configure(final HttpSecurity http) throws Exception {
+ http.csrf().disable().
+ authorizeRequests().
+ requestMatchers(EndpointRequest.toAnyEndpoint()).
+ authenticated().
+ and().
+ httpBasic();
+ }
+ };
}
}
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
index 2dfe2a6..d51fa88 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/SyncopeEnduserApplication.java
@@ -30,7 +30,6 @@ import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStart;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStop;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
@@ -42,7 +41,7 @@ import org.springframework.context.annotation.Bean;
@SpringBootApplication(exclude = {
ErrorMvcAutoConfiguration.class,
- HttpMessageConvertersAutoConfiguration.class })
+ HttpMessageConvertersAutoConfiguration.class }, proxyBeanMethods = false)
@EnableConfigurationProperties(EnduserProperties.class)
public class SyncopeEnduserApplication extends SpringBootServletInitializer {
@@ -52,12 +51,6 @@ public class SyncopeEnduserApplication extends SpringBootServletInitializer {
build().run(args);
}
- @Autowired
- private ServiceOps serviceOps;
-
- @Autowired
- private EnduserProperties props;
-
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
return builder.properties(Map.of(
@@ -73,7 +66,8 @@ public class SyncopeEnduserApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean
@Bean
- public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator() {
+ public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator(final ServiceOps serviceOps,
+ final EnduserProperties props) {
return new SyncopeCoreHealthIndicator(
serviceOps,
props.getAnonymousUser(),
@@ -83,8 +77,8 @@ public class SyncopeEnduserApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean
@Bean
- public SyncopeEnduserInfoContributor syncopeEnduserInfoContributor() {
- return new SyncopeEnduserInfoContributor();
+ public SyncopeEnduserInfoContributor syncopeEnduserInfoContributor(final EnduserProperties enduserProperties) {
+ return new SyncopeEnduserInfoContributor(enduserProperties);
}
@ConditionalOnMissingBean(name = "classPathScanImplementationLookup")
diff --git a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/actuate/SyncopeEnduserInfoContributor.java b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/actuate/SyncopeEnduserInfoContributor.java
index 6d4db1b..8bbc6af 100644
--- a/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/actuate/SyncopeEnduserInfoContributor.java
+++ b/client/idrepo/enduser/src/main/java/org/apache/syncope/client/enduser/actuate/SyncopeEnduserInfoContributor.java
@@ -19,15 +19,17 @@
package org.apache.syncope.client.enduser.actuate;
import org.apache.syncope.client.enduser.EnduserProperties;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.security.access.prepost.PreAuthorize;
public class SyncopeEnduserInfoContributor implements InfoContributor {
- @Autowired
- protected EnduserProperties enduserProperties;
+ protected final EnduserProperties enduserProperties;
+
+ public SyncopeEnduserInfoContributor(final EnduserProperties enduserProperties) {
+ this.enduserProperties = enduserProperties;
+ }
@PreAuthorize("isAuthenticated()")
@Override
diff --git a/client/idrepo/enduser/src/main/resources/enduser.properties b/client/idrepo/enduser/src/main/resources/enduser.properties
index a9f6930..c9d8cc6 100644
--- a/client/idrepo/enduser/src/main/resources/enduser.properties
+++ b/client/idrepo/enduser/src/main/resources/enduser.properties
@@ -61,3 +61,8 @@ enduser.security.headers.Strict-Transport-Security=max-age=31536000; includeSubD
enduser.security.headers.X-Content-Type-Options=nosniff
enduser.security.headers.X-Frame-Options=sameorigin
#enduser.security.headers.Content-Security-Policy=default-src https:
+
+##
+# Disable CGLib Proxies
+spring.aop.auto=true
+spring.aop.proxy-target-class=false
diff --git a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
index 9ae41d8..0ce331f 100644
--- a/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
+++ b/client/idrepo/enduser/src/test/java/org/apache/syncope/client/enduser/AbstractTest.java
@@ -64,7 +64,7 @@ import org.springframework.context.annotation.Configuration;
public abstract class AbstractTest {
@ImportAutoConfiguration
- @Configuration
+ @Configuration(proxyBeanMethods = false)
public static class SyncopeEnduserWebApplicationTestConfig {
@Bean
diff --git a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperConfParamOps.java b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperConfParamOps.java
index 7e4c985..a331d40 100644
--- a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperConfParamOps.java
+++ b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperConfParamOps.java
@@ -28,7 +28,6 @@ import org.apache.syncope.common.keymaster.client.api.KeymasterException;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
/**
* Implements {@link ConfParamOps} via Apache Curator / Zookeeper.
@@ -41,13 +40,16 @@ public class ZookeeperConfParamOps implements ConfParamOps {
private static final String CONF_PATH = "/conf";
- @Autowired
- private CuratorFramework client;
+ private final CuratorFramework client;
private static String buildConfPath(final String... parts) {
return CONF_PATH + '/' + String.join("/", parts);
}
+ public ZookeeperConfParamOps(final CuratorFramework client) {
+ this.client = client;
+ }
+
@Override
public Map<String, Object> list(final String domain) {
try {
diff --git a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperKeymasterClientContext.java b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperKeymasterClientContext.java
index 079d8ea..5a76d54 100644
--- a/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperKeymasterClientContext.java
+++ b/common/keymaster/client-zookeeper/src/main/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperKeymasterClientContext.java
@@ -35,7 +35,6 @@ import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.data.ACL;
import org.apache.zookeeper.server.auth.DigestLoginModule;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -46,7 +45,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
@EnableConfigurationProperties(KeymasterProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class ZookeeperKeymasterClientContext {
private static final Pattern IPV4 = Pattern.compile(
@@ -63,12 +62,9 @@ public class ZookeeperKeymasterClientContext {
}
}
- @Autowired
- private KeymasterProperties props;
-
@Conditional(ZookeeperCondition.class)
@Bean
- public CuratorFramework curatorFramework() throws InterruptedException {
+ public CuratorFramework curatorFramework(final KeymasterProperties props) throws InterruptedException {
if (StringUtils.isNotBlank(props.getUsername()) && StringUtils.isNotBlank(props.getPassword())) {
javax.security.auth.login.Configuration.setConfiguration(new javax.security.auth.login.Configuration() {
@@ -115,8 +111,8 @@ public class ZookeeperKeymasterClientContext {
@Conditional(ZookeeperCondition.class)
@Bean
- public ConfParamOps selfConfParamOps() {
- return new ZookeeperConfParamOps();
+ public ConfParamOps selfConfParamOps(final CuratorFramework client) {
+ return new ZookeeperConfParamOps(client);
}
@Conditional(ZookeeperCondition.class)
diff --git a/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestContext.java b/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestContext.java
index 7b43155..ff5facb 100644
--- a/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestContext.java
+++ b/common/keymaster/client-zookeeper/src/test/java/org/apache/syncope/common/keymaster/client/zookeeper/ZookeeperTestContext.java
@@ -24,7 +24,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@PropertySource("classpath:test.properties")
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class ZookeeperTestContext {
@Bean
diff --git a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterClientContext.java b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterClientContext.java
index ecd3426..8c33190 100644
--- a/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterClientContext.java
+++ b/common/keymaster/self/client-self/src/main/java/org/apache/syncope/common/keymaster/client/self/SelfKeymasterClientContext.java
@@ -27,7 +27,7 @@ import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
import org.apache.syncope.common.keymaster.client.api.DomainOps;
import org.apache.syncope.common.keymaster.client.api.KeymasterProperties;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
@@ -39,7 +39,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
@EnableConfigurationProperties(KeymasterProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SelfKeymasterClientContext {
private static final Pattern HTTP = Pattern.compile("^http.+");
@@ -55,13 +55,10 @@ public class SelfKeymasterClientContext {
}
}
- @Autowired
- private KeymasterProperties props;
-
@Conditional(SelfKeymasterCondition.class)
@Bean
@ConditionalOnMissingBean(name = "selfKeymasterRESTClientFactoryBean")
- public JAXRSClientFactoryBean selfKeymasterRESTClientFactoryBean() {
+ public JAXRSClientFactoryBean selfKeymasterRESTClientFactoryBean(final KeymasterProperties props) {
JAXRSClientFactoryBean restClientFactoryBean = new JAXRSClientFactoryBean();
restClientFactoryBean.setAddress(props.getAddress());
restClientFactoryBean.setUsername(props.getUsername());
@@ -77,21 +74,24 @@ public class SelfKeymasterClientContext {
@Conditional(SelfKeymasterCondition.class)
@Bean
@ConditionalOnMissingBean(name = "selfConfParamOps")
- public ConfParamOps selfConfParamOps() {
- return new SelfKeymasterConfParamOps(selfKeymasterRESTClientFactoryBean());
+ public ConfParamOps selfConfParamOps(@Qualifier("selfKeymasterRESTClientFactoryBean")
+ final JAXRSClientFactoryBean selfKeymasterRESTClientFactoryBean) {
+ return new SelfKeymasterConfParamOps(selfKeymasterRESTClientFactoryBean);
}
@Conditional(SelfKeymasterCondition.class)
@Bean
@ConditionalOnMissingBean(name = "selfServiceOps")
- public ServiceOps selfServiceOps() {
- return new SelfKeymasterServiceOps(selfKeymasterRESTClientFactoryBean(), 5);
+ public ServiceOps selfServiceOps(@Qualifier("selfKeymasterRESTClientFactoryBean")
+ final JAXRSClientFactoryBean selfKeymasterRESTClientFactoryBean) {
+ return new SelfKeymasterServiceOps(selfKeymasterRESTClientFactoryBean, 5);
}
@Conditional(SelfKeymasterCondition.class)
@Bean
@ConditionalOnMissingBean(name = "domainOps")
- public DomainOps domainOps() {
- return new SelfKeymasterDomainOps(selfKeymasterRESTClientFactoryBean());
+ public DomainOps domainOps(@Qualifier("selfKeymasterRESTClientFactoryBean")
+ final JAXRSClientFactoryBean selfKeymasterRESTClientFactoryBean) {
+ return new SelfKeymasterDomainOps(selfKeymasterRESTClientFactoryBean);
}
}
diff --git a/core/am/logic/src/main/java/org/apache/syncope/core/logic/AMLogicContext.java b/core/am/logic/src/main/java/org/apache/syncope/core/logic/AMLogicContext.java
index cf6e357..91bcf3f 100644
--- a/core/am/logic/src/main/java/org/apache/syncope/core/logic/AMLogicContext.java
+++ b/core/am/logic/src/main/java/org/apache/syncope/core/logic/AMLogicContext.java
@@ -49,38 +49,13 @@ import org.apache.syncope.core.provisioning.api.data.SRARouteDataBinder;
import org.apache.syncope.core.provisioning.api.data.WAConfigDataBinder;
import org.apache.syncope.core.provisioning.api.data.wa.WAClientAppDataBinder;
import org.apache.syncope.core.spring.security.SecurityProperties;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class AMLogicContext {
- @Autowired
- private SecurityProperties securityProperties;
-
- @Autowired
- private ServiceOps serviceOps;
-
- @Autowired
- private AuthProfileDAO authProfileDAO;
-
- @Autowired
- private AuthProfileDataBinder authProfileDataBinder;
-
- @Autowired
- private CASSPDAO casspDAO;
-
- @Autowired
- private OIDCRPDAO oidcrpDAO;
-
- @Autowired
- private SAML2SPDAO saml2spDAO;
-
- @Autowired
- private EntityFactory entityFactory;
-
@ConditionalOnMissingBean
@Bean
public AMEntitlementLoader amEntitlementLoader() {
@@ -89,7 +64,6 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuthModuleLogic authModuleLogic(
final AuthModuleDataBinder binder,
final AuthModuleDAO authModuleDAO) {
@@ -99,15 +73,19 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public AuthProfileLogic authProfileLogic() {
+ public AuthProfileLogic authProfileLogic(final AuthProfileDAO authProfileDAO,
+ final AuthProfileDataBinder authProfileDataBinder) {
return new AuthProfileLogic(authProfileDAO, authProfileDataBinder);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ClientAppLogic clientAppLogic(
+ final ServiceOps serviceOps,
+ final CASSPDAO casspDAO,
+ final OIDCRPDAO oidcrpDAO,
+ final SAML2SPDAO saml2spDAO,
+ final SecurityProperties securityProperties,
final ClientAppUtilsFactory clientAppUtilsFactory,
final ClientAppDataBinder binder) {
@@ -123,7 +101,6 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCJWKSLogic oidcJWKSLogic(
final OIDCJWKSDataBinder binder,
final OIDCJWKSDAO dao) {
@@ -133,7 +110,6 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2IdPEntityLogic saml2IdPEntityLogic(
final SAML2IdPEntityDataBinder binder,
final SAML2IdPEntityDAO entityDAO) {
@@ -143,7 +119,6 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SPEntityLogic saml2SPEntityLogic(
final SAML2SPEntityDataBinder binder,
final SAML2SPEntityDAO entityDAO) {
@@ -153,8 +128,10 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SRARouteLogic sraRouteLogic(
+ final EntityFactory entityFactory,
+ final ServiceOps serviceOps,
+ final SecurityProperties securityProperties,
final SRARouteDAO routeDAO,
final SRARouteDataBinder binder) {
@@ -163,39 +140,50 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- public GoogleMfaAuthAccountLogic googleMfaAuthAccountLogic() {
+ public GoogleMfaAuthAccountLogic googleMfaAuthAccountLogic(final AuthProfileDAO authProfileDAO,
+ final AuthProfileDataBinder authProfileDataBinder,
+ final EntityFactory entityFactory) {
return new GoogleMfaAuthAccountLogic(entityFactory, authProfileDAO, authProfileDataBinder);
}
@ConditionalOnMissingBean
@Bean
- public GoogleMfaAuthTokenLogic googleMfaAuthTokenLogic() {
+ public GoogleMfaAuthTokenLogic googleMfaAuthTokenLogic(final AuthProfileDAO authProfileDAO,
+ final AuthProfileDataBinder authProfileDataBinder,
+ final EntityFactory entityFactory) {
return new GoogleMfaAuthTokenLogic(entityFactory, authProfileDAO, authProfileDataBinder);
}
@ConditionalOnMissingBean
@Bean
- public ImpersonationLogic impersonationLogic() {
+ public ImpersonationLogic impersonationLogic(final AuthProfileDAO authProfileDAO,
+ final AuthProfileDataBinder authProfileDataBinder,
+ final EntityFactory entityFactory) {
return new ImpersonationLogic(entityFactory, authProfileDAO, authProfileDataBinder);
}
@ConditionalOnMissingBean
@Bean
- public U2FRegistrationLogic u2fRegistrationLogic() {
+ public U2FRegistrationLogic u2fRegistrationLogic(final AuthProfileDAO authProfileDAO,
+ final AuthProfileDataBinder authProfileDataBinder,
+ final EntityFactory entityFactory) {
return new U2FRegistrationLogic(entityFactory, authProfileDAO, authProfileDataBinder);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public WAClientAppLogic waClientAppLogic(final WAClientAppDataBinder binder) {
+ public WAClientAppLogic waClientAppLogic(final WAClientAppDataBinder binder,
+ final SAML2SPDAO saml2spDAO,
+ final OIDCRPDAO oidcrpDAO,
+ final CASSPDAO casspDAO) {
return new WAClientAppLogic(binder, saml2spDAO, oidcrpDAO, casspDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public WAConfigLogic waConfigLogic(
+ final ServiceOps serviceOps,
+ final SecurityProperties securityProperties,
final WAConfigDataBinder binder,
final WAConfigDAO waConfigDAO) {
@@ -204,7 +192,9 @@ public class AMLogicContext {
@ConditionalOnMissingBean
@Bean
- public WebAuthnRegistrationLogic webAuthnRegistrationLogic() {
+ public WebAuthnRegistrationLogic webAuthnRegistrationLogic(final AuthProfileDAO authProfileDAO,
+ final AuthProfileDataBinder authProfileDataBinder,
+ final EntityFactory entityFactory) {
return new WebAuthnRegistrationLogic(entityFactory, authProfileDAO, authProfileDataBinder);
}
}
diff --git a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AMRESTCXFContext.java b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AMRESTCXFContext.java
index 913865c..c55da93 100644
--- a/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AMRESTCXFContext.java
+++ b/core/am/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/AMRESTCXFContext.java
@@ -60,38 +60,33 @@ import org.apache.syncope.core.rest.cxf.service.wa.U2FRegistrationServiceImpl;
import org.apache.syncope.core.rest.cxf.service.wa.WAClientAppServiceImpl;
import org.apache.syncope.core.rest.cxf.service.wa.WAConfigServiceImpl;
import org.apache.syncope.core.rest.cxf.service.wa.WebAuthnRegistrationServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class AMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuthModuleService authModuleService(final AuthModuleLogic authModuleLogic) {
return new AuthModuleServiceImpl(authModuleLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuthProfileService authProfileService(final AuthProfileLogic authProfileLogic) {
return new AuthProfileServiceImpl(authProfileLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ClientAppService clientAppService(final ClientAppLogic clientAppLogic) {
return new ClientAppServiceImpl(clientAppLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public GoogleMfaAuthAccountService googleMfaAuthAccountService(
final GoogleMfaAuthAccountLogic googleMfaAuthAccountLogic) {
@@ -100,7 +95,6 @@ public class AMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public GoogleMfaAuthTokenService googleMfaAuthTokenService(
final GoogleMfaAuthTokenLogic googleMfaAuthTokenLogic) {
@@ -109,63 +103,54 @@ public class AMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ImpersonationService impersonationService(final ImpersonationLogic impersonationLogic) {
return new ImpersonationServiceImpl(impersonationLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCJWKSService oidcJWKSService(final OIDCJWKSLogic oidcJWKSLogic) {
return new OIDCJWKSServiceImpl(oidcJWKSLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2IdPEntityService saml2IdPEntityService(final SAML2IdPEntityLogic saml2IdPEntityLogic) {
return new SAML2IdPEntityServiceImpl(saml2IdPEntityLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SPEntityService saml2SPEntityService(final SAML2SPEntityLogic saml2SPEntityLogic) {
return new SAML2SPEntityServiceImpl(saml2SPEntityLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SRARouteService sraRouteService(final SRARouteLogic sraRouteLogic) {
return new SRARouteServiceImpl(sraRouteLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public U2FRegistrationService u2fRegistrationService(final U2FRegistrationLogic u2fRegistrationLogic) {
return new U2FRegistrationServiceImpl(u2fRegistrationLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public WAClientAppService waClientAppService(final WAClientAppLogic waClientAppLogic) {
return new WAClientAppServiceImpl(waClientAppLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public WAConfigService waConfigService(final WAConfigLogic waConfigLogic) {
return new WAConfigServiceImpl(waConfigLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public WebAuthnRegistrationService webAuthnRegistrationService(
final WebAuthnRegistrationLogic webAuthnRegistrationLogic) {
diff --git a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/IdMLogicContext.java b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/IdMLogicContext.java
index b29e181..67dd540 100644
--- a/core/idm/logic/src/main/java/org/apache/syncope/core/logic/IdMLogicContext.java
+++ b/core/idm/logic/src/main/java/org/apache/syncope/core/logic/IdMLogicContext.java
@@ -39,47 +39,12 @@ import org.apache.syncope.core.provisioning.api.data.RemediationDataBinder;
import org.apache.syncope.core.provisioning.api.data.ResourceDataBinder;
import org.apache.syncope.core.provisioning.java.pushpull.InboundMatcher;
import org.apache.syncope.core.provisioning.java.pushpull.OutboundMatcher;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class IdMLogicContext {
-
- @Autowired
- private AnyTypeDAO anyTypeDAO;
-
- @Autowired
- private ExternalResourceDAO resourceDAO;
-
- @Autowired
- private ConnInstanceDAO connInstanceDAO;
-
- @Autowired
- private VirSchemaDAO virSchemaDAO;
-
- @Autowired
- private VirAttrHandler virAttrHandler;
-
- @Autowired
- private ConnInstanceDataBinder connInstanceDataBinder;
-
- @Autowired
- private ConnectorManager connectorManager;
-
- @Autowired
- private InboundMatcher inboundMatcher;
-
- @Autowired
- private OutboundMatcher outboundMatcher;
-
- @Autowired
- private MappingManager mappingManager;
-
- @Autowired
- private AnyUtilsFactory anyUtilsFactory;
-
@ConditionalOnMissingBean
@Bean
public IdMEntitlementLoader idmEntitlementLoader() {
@@ -94,8 +59,12 @@ public class IdMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ConnectorLogic connectorLogic(final ConnIdBundleManager connIdBundleManager) {
+ public ConnectorLogic connectorLogic(
+ final ConnIdBundleManager connIdBundleManager,
+ final ExternalResourceDAO resourceDAO,
+ final ConnInstanceDAO connInstanceDAO,
+ final ConnInstanceDataBinder connInstanceDataBinder,
+ final ConnectorManager connectorManager) {
return new ConnectorLogic(
connIdBundleManager,
connectorManager,
@@ -106,12 +75,20 @@ public class IdMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ReconciliationLogic reconciliationLogic(
final RealmDAO realmDAO,
+ final AnyUtilsFactory anyUtilsFactory,
final PlainSchemaDAO plainSchemaDAO,
final DerSchemaDAO derSchemaDAO,
- final AnySearchDAO anySearchDAO) {
+ final AnySearchDAO anySearchDAO,
+ final AnyTypeDAO anyTypeDAO,
+ final ExternalResourceDAO resourceDAO,
+ final VirSchemaDAO virSchemaDAO,
+ final VirAttrHandler virAttrHandler,
+ final ConnectorManager connectorManager,
+ final InboundMatcher inboundMatcher,
+ final OutboundMatcher outboundMatcher,
+ final MappingManager mappingManager) {
return new ReconciliationLogic(
anyUtilsFactory,
@@ -131,7 +108,6 @@ public class IdMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RemediationLogic remediationLogic(
final UserLogic userLogic,
final GroupLogic groupLogic,
@@ -144,8 +120,19 @@ public class IdMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ResourceLogic resourceLogic(final ResourceDataBinder resourceDataBinder) {
+ public ResourceLogic resourceLogic(
+ final ResourceDataBinder resourceDataBinder,
+ final AnyUtilsFactory anyUtilsFactory,
+ final AnyTypeDAO anyTypeDAO,
+ final ExternalResourceDAO resourceDAO,
+ final ConnInstanceDAO connInstanceDAO,
+ final VirSchemaDAO virSchemaDAO,
+ final VirAttrHandler virAttrHandler,
+ final ConnInstanceDataBinder connInstanceDataBinder,
+ final ConnectorManager connectorManager,
+ final OutboundMatcher outboundMatcher,
+ final MappingManager mappingManager) {
+
return new ResourceLogic(
resourceDAO,
anyTypeDAO,
diff --git a/core/idm/logic/src/test/java/org/apache/syncope/core/logic/IdMLogicTestContext.java b/core/idm/logic/src/test/java/org/apache/syncope/core/logic/IdMLogicTestContext.java
index 92b98d9..f29b633 100644
--- a/core/idm/logic/src/test/java/org/apache/syncope/core/logic/IdMLogicTestContext.java
+++ b/core/idm/logic/src/test/java/org/apache/syncope/core/logic/IdMLogicTestContext.java
@@ -31,7 +31,6 @@ import org.apache.syncope.core.persistence.jpa.StartupDomainLoader;
import org.apache.syncope.core.provisioning.java.ProvisioningContext;
import org.apache.syncope.core.spring.security.SecurityContext;
import org.apache.syncope.core.workflow.java.WorkflowContext;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -41,11 +40,10 @@ import org.springframework.context.annotation.PropertySource;
@PropertySource("classpath:core-test.properties")
@Import({ IdRepoLogicContext.class, IdMLogicContext.class, SecurityContext.class,
PersistenceContext.class, MasterDomain.class, ProvisioningContext.class, WorkflowContext.class })
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class IdMLogicTestContext {
@Bean
- @Autowired
public TestInitializer testInitializer(
final StartupDomainLoader domainLoader,
final DomainHolder domainHolder,
@@ -66,7 +64,6 @@ public class IdMLogicTestContext {
}
@Bean
- @Autowired
public DomainOps domainOps(final DomainRegistry domainRegistry) {
return new DummyDomainOps(domainRegistry);
}
diff --git a/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdMRESTCXFContext.java b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdMRESTCXFContext.java
index 3a0ce14..0c0ceb2 100644
--- a/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdMRESTCXFContext.java
+++ b/core/idm/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdMRESTCXFContext.java
@@ -34,24 +34,21 @@ import org.apache.syncope.core.rest.cxf.service.ConnectorServiceImpl;
import org.apache.syncope.core.rest.cxf.service.ReconciliationServiceImpl;
import org.apache.syncope.core.rest.cxf.service.RemediationServiceImpl;
import org.apache.syncope.core.rest.cxf.service.ResourceServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class IdMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConnectorService connectorService(final ConnectorLogic connectorLogic) {
return new ConnectorServiceImpl(connectorLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ReconciliationService reconciliationService(
final SearchCondVisitor searchCondVisitor,
final ReconciliationLogic reconciliationLogic) {
@@ -61,7 +58,6 @@ public class IdMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RemediationService remediationService(
final RemediationLogic remediationLogic,
final UserDAO userDAO,
@@ -73,7 +69,6 @@ public class IdMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ResourceService resourceService(final ResourceLogic resourceLogic) {
return new ResourceServiceImpl(resourceLogic);
}
diff --git a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/IdRepoLogicContext.java b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/IdRepoLogicContext.java
index 0b2ac07..f28af9a 100644
--- a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/IdRepoLogicContext.java
+++ b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/IdRepoLogicContext.java
@@ -92,7 +92,6 @@ import org.apache.syncope.core.spring.security.SecurityProperties;
import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -100,108 +99,15 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
-@EnableAspectJAutoProxy
+@EnableAspectJAutoProxy(proxyTargetClass = false)
@EnableConfigurationProperties(LogicProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class IdRepoLogicContext {
- @Autowired
- private LogicProperties logicProperties;
-
- @Autowired
- private SecurityProperties securityProperties;
-
- @Autowired
- private AccessTokenDAO accessTokenDAO;
-
- @Autowired
- private AnySearchDAO anySearchDAO;
-
- @Autowired
- private AnyObjectDAO anyObjectDAO;
-
- @Autowired
- private AnyTypeClassDAO anyTypeClassDAO;
-
- @Autowired
- private AnyTypeDAO anyTypeDAO;
-
- @Autowired
- private AuditConfDAO auditConfDAO;
-
- @Autowired
- private DelegationDAO delegationDAO;
-
- @Autowired
- private DerSchemaDAO derSchemaDAO;
-
- @Autowired
- private ExternalResourceDAO externalResourceDAO;
-
- @Autowired
- private GroupDAO groupDAO;
-
- @Autowired
- private ImplementationDAO implementationDAO;
-
- @Autowired
- private NotificationDAO notificationDAO;
-
- @Autowired
- private PlainSchemaDAO plainSchemaDAO;
-
- @Autowired
- private PolicyDAO policyDAO;
-
- @Autowired
- private RealmDAO realmDAO;
-
- @Autowired
- private ReportDAO reportDAO;
-
- @Autowired
- private TaskDAO taskDAO;
-
- @Autowired
- private UserDAO userDAO;
-
- @Autowired
- private VirSchemaDAO virSchemaDAO;
-
- @Autowired
- private AuditManager auditManager;
-
- @Autowired
- private TemplateUtils templateUtils;
-
- @Autowired
- private EntityFactory entityFactory;
-
- @Autowired
- private GroupDataBinder groupDataBinder;
-
- @Autowired
- private TaskDataBinder taskDataBinder;
-
- @Autowired
- private ConfParamOps confParamOps;
-
- @Autowired
- private JobManager jobManager;
-
- @Autowired
- private SchedulerFactoryBean scheduler;
-
- @Autowired
- private PropagationManager propagationManager;
-
- @Autowired
- private PropagationTaskExecutor taskExecutor;
-
@ConditionalOnMissingBean
@Bean
- @Autowired
- public LogicInvocationHandler logicInvocationHandler(final NotificationManager notificationManager) {
+ public LogicInvocationHandler logicInvocationHandler(final NotificationManager notificationManager,
+ final AuditManager auditManager) {
return new LogicInvocationHandler(notificationManager, auditManager);
}
@@ -213,27 +119,27 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- public AuditAccessor auditAccessor() {
+ public AuditAccessor auditAccessor(final AuditConfDAO auditConfDAO) {
return new AuditAccessor(auditConfDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public AuditLoader auditLoader(final AuditAccessor auditAccessor, final ImplementationLookup implementationLookup) {
+ public AuditLoader auditLoader(final AuditAccessor auditAccessor, final ImplementationLookup implementationLookup,
+ final LogicProperties logicProperties) {
return new AuditLoader(auditAccessor, implementationLookup, logicProperties);
}
@ConditionalOnMissingBean
@Bean
- public EntitlementAccessor entitlementAccessor() {
+ public EntitlementAccessor entitlementAccessor(final AnyTypeDAO anyTypeDAO) {
return new EntitlementAccessor(anyTypeDAO);
}
@ConditionalOnMissingBean
@Bean
- public IdRepoEntitlementLoader idRepoEntitlementLoader() {
- return new IdRepoEntitlementLoader(entitlementAccessor());
+ public IdRepoEntitlementLoader idRepoEntitlementLoader(final EntitlementAccessor entitlementAccessor) {
+ return new IdRepoEntitlementLoader(entitlementAccessor);
}
@ConditionalOnMissingBean
@@ -244,16 +150,21 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public AccessTokenLogic accessTokenLogic(final AccessTokenDataBinder binder) {
+ public AccessTokenLogic accessTokenLogic(final AccessTokenDataBinder binder,
+ final AccessTokenDAO accessTokenDAO,
+ final SecurityProperties securityProperties) {
return new AccessTokenLogic(securityProperties, binder, accessTokenDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyObjectLogic anyObjectLogic(
final AnyObjectDataBinder binder,
+ final TemplateUtils templateUtils,
+ final RealmDAO realmDAO,
+ final AnyTypeDAO anyTypeDAO,
+ final AnyObjectDAO anyObjectDAO,
+ final AnySearchDAO anySearchDAO,
final AnyObjectProvisioningManager provisioningManager) {
return new AnyObjectLogic(
@@ -268,21 +179,21 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public AnyTypeClassLogic anyTypeClassLogic(final AnyTypeClassDataBinder binder) {
+ public AnyTypeClassLogic anyTypeClassLogic(final AnyTypeClassDataBinder binder,
+ final AnyTypeClassDAO anyTypeClassDAO) {
return new AnyTypeClassLogic(binder, anyTypeClassDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public AnyTypeLogic anyTypeLogic(final AnyTypeDataBinder binder) {
+ public AnyTypeLogic anyTypeLogic(final AnyTypeDataBinder binder,
+ final AnyTypeDAO anyTypeDAO,
+ final AnyObjectDAO anyObjectDAO) {
return new AnyTypeLogic(binder, anyTypeDAO, anyObjectDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ApplicationLogic applicationLogic(
final ApplicationDataBinder binder,
final ApplicationDAO applicationDAO) {
@@ -292,9 +203,12 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuditLogic auditLogic(
+ final AuditManager auditManager,
final AuditLoader auditLoader,
+ final AuditConfDAO auditConfDAO,
+ final ExternalResourceDAO externalResourceDAO,
+ final EntityFactory entityFactory,
final AuditDataBinder binder) {
return new AuditLogic(
@@ -308,14 +222,14 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public DelegationLogic delegationLogic(final DelegationDataBinder binder) {
+ public DelegationLogic delegationLogic(final DelegationDataBinder binder,
+ final UserDAO userDAO,
+ final DelegationDAO delegationDAO) {
return new DelegationLogic(binder, delegationDAO, userDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public DynRealmLogic dynRealmLogic(
final DynRealmDataBinder binder,
final DynRealmDAO dynRealmDAO) {
@@ -325,8 +239,22 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public GroupLogic groupLogic(final GroupProvisioningManager provisioningManager) {
+ public GroupLogic groupLogic(final GroupProvisioningManager provisioningManager,
+ final JobManager jobManager,
+ final TemplateUtils templateUtils,
+ final EntityFactory entityFactory,
+ final RealmDAO realmDAO,
+ final AnyTypeDAO anyTypeDAO,
+ final UserDAO userDAO,
+ final GroupDAO groupDAO,
+ final AnySearchDAO anySearchDAO,
+ final SchedulerFactoryBean scheduler,
+ final TaskDAO taskDAO,
+ final ConfParamOps confParamOps,
+ final GroupDataBinder groupDataBinder,
+ final TaskDataBinder taskDataBinder,
+ final ImplementationDAO implementationDAO,
+ final SecurityProperties securityProperties) {
return new GroupLogic(
realmDAO,
anyTypeDAO,
@@ -348,8 +276,15 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ImplementationLogic implementationLogic(final ImplementationDataBinder binder) {
+ public ImplementationLogic implementationLogic(final ImplementationDataBinder binder,
+ final PlainSchemaDAO plainSchemaDAO,
+ final RealmDAO realmDAO,
+ final PolicyDAO policyDAO,
+ final ReportDAO reportDAO,
+ final TaskDAO taskDAO,
+ final ExternalResourceDAO externalResourceDAO,
+ final ImplementationDAO implementationDAO,
+ final NotificationDAO notificationDAO) {
return new ImplementationLogic(
binder,
implementationDAO,
@@ -364,23 +299,26 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public MailTemplateLogic mailTemplateLogic(final MailTemplateDAO mailTemplateDAO) {
+ public MailTemplateLogic mailTemplateLogic(final MailTemplateDAO mailTemplateDAO,
+ final EntityFactory entityFactory,
+ final NotificationDAO notificationDAO) {
return new MailTemplateLogic(mailTemplateDAO, notificationDAO, entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public NotificationLogic notificationLogic(final NotificationDataBinder binder) {
+ public NotificationLogic notificationLogic(final NotificationDataBinder binder,
+ final JobManager jobManager,
+ final SchedulerFactoryBean scheduler,
+ final NotificationDAO notificationDAO) {
return new NotificationLogic(jobManager, scheduler, notificationDAO, binder);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public PolicyLogic policyLogic(
final PolicyDataBinder binder,
+ final PolicyDAO policyDAO,
final PolicyUtilsFactory policyUtilsFactory) {
return new PolicyLogic(policyDAO, binder, policyUtilsFactory);
@@ -388,14 +326,16 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public RealmLogic realmLogic(final RealmDataBinder binder) {
+ public RealmLogic realmLogic(final RealmDataBinder binder,
+ final RealmDAO realmDAO,
+ final AnySearchDAO anySearchDAO,
+ final PropagationManager propagationManager,
+ final PropagationTaskExecutor taskExecutor) {
return new RealmLogic(realmDAO, anySearchDAO, binder, propagationManager, taskExecutor);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public RelationshipTypeLogic relationshipTypeLogic(
final RelationshipTypeDataBinder binder,
final RelationshipTypeDAO relationshipTypeDAO) {
@@ -405,9 +345,13 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ReportLogic reportLogic(
+ final JobManager jobManager,
+ final ConfParamOps confParamOps,
final ReportDataBinder binder,
+ final SchedulerFactoryBean scheduler,
+ final ReportDAO reportDAO,
+ final EntityFactory entityFactory,
final ReportExecDAO reportExecDAO) {
return new ReportLogic(jobManager, scheduler, reportDAO, reportExecDAO, confParamOps, binder, entityFactory);
@@ -415,14 +359,14 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ReportTemplateLogic reportTemplateLogic(final ReportTemplateDAO reportTemplateDAO) {
+ public ReportTemplateLogic reportTemplateLogic(final ReportTemplateDAO reportTemplateDAO,
+ final ReportDAO reportDAO,
+ final EntityFactory entityFactory) {
return new ReportTemplateLogic(reportTemplateDAO, reportDAO, entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public RoleLogic roleLogic(
final RoleDataBinder binder,
final RoleDAO roleDAO) {
@@ -432,16 +376,19 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public SchemaLogic schemaLogic(final SchemaDataBinder binder) {
+ public SchemaLogic schemaLogic(final SchemaDataBinder binder,
+ final VirSchemaDAO virSchemaDAO,
+ final AnyTypeClassDAO anyTypeClassDAO,
+ final DerSchemaDAO derSchemaDAO,
+ final PlainSchemaDAO plainSchemaDAO) {
return new SchemaLogic(plainSchemaDAO, derSchemaDAO, virSchemaDAO, anyTypeClassDAO, binder);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SecurityQuestionLogic securityQuestionLogic(
final SecurityQuestionDataBinder binder,
+ final UserDAO userDAO,
final SecurityQuestionDAO securityQuestionDAO) {
return new SecurityQuestionLogic(securityQuestionDAO, userDAO, binder);
@@ -449,10 +396,14 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SyncopeLogic syncopeLogic(
final ContentExporter exporter,
final UserWorkflowAdapter uwfAdapter,
+ final AnyTypeDAO anyTypeDAO,
+ final GroupDAO groupDAO,
+ final ConfParamOps confParamOps,
+ final GroupDataBinder groupDataBinder,
+ final AnySearchDAO anySearchDAO,
final GroupWorkflowAdapter gwfAdapter,
final AnyObjectWorkflowAdapter awfAdapter) {
@@ -470,11 +421,18 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public TaskLogic taskLogic(
+ final JobManager jobManager,
+ final PropagationTaskExecutor taskExecutor,
final TaskExecDAO taskExecDAO,
+ final TaskDAO taskDAO,
+ final SchedulerFactoryBean scheduler,
+ final ConfParamOps confParamOps,
+ final ExternalResourceDAO externalResourceDAO,
final NotificationJobDelegate notificationJobDelegate,
- final TaskUtilsFactory taskUtilsFactory) {
+ final TaskDataBinder taskDataBinder,
+ final TaskUtilsFactory taskUtilsFactory,
+ final NotificationDAO notificationDAO) {
return new TaskLogic(
jobManager,
@@ -492,9 +450,17 @@ public class IdRepoLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserLogic userLogic(
final UserDataBinder binder,
+ final TemplateUtils templateUtils,
+ final RealmDAO realmDAO,
+ final AnyTypeDAO anyTypeDAO,
+ final UserDAO userDAO,
+ final GroupDAO groupDAO,
+ final AnySearchDAO anySearchDAO,
+ final AccessTokenDAO accessTokenDAO,
+ final DelegationDAO delegationDAO,
+ final ConfParamOps confParamOps,
final UserProvisioningManager provisioningManager,
final SyncopeLogic syncopeLogic) {
diff --git a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdRepoRESTCXFContext.java b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdRepoRESTCXFContext.java
index 595c714..71b12d4 100644
--- a/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdRepoRESTCXFContext.java
+++ b/core/idrepo/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/IdRepoRESTCXFContext.java
@@ -29,6 +29,8 @@ import java.util.Set;
import javax.servlet.ServletRequestListener;
import org.apache.cxf.Bus;
import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.jaxrs.ext.ContextProvider;
+import org.apache.cxf.jaxrs.ext.search.SearchContext;
import org.apache.cxf.jaxrs.ext.search.SearchContextImpl;
import org.apache.cxf.jaxrs.ext.search.SearchContextProvider;
import org.apache.cxf.jaxrs.ext.search.SearchUtils;
@@ -121,7 +123,6 @@ import org.apache.syncope.core.rest.cxf.service.SyncopeServiceImpl;
import org.apache.syncope.core.rest.cxf.service.TaskServiceImpl;
import org.apache.syncope.core.rest.cxf.service.UserSelfServiceImpl;
import org.apache.syncope.core.rest.cxf.service.UserServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.ApplicationContext;
@@ -132,18 +133,9 @@ import org.springframework.core.env.Environment;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@PropertySource("classpath:errorMessages.properties")
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class IdRepoRESTCXFContext {
- @Autowired
- private SearchCondVisitor searchCondVisitor;
-
- @Autowired
- private Bus bus;
-
- @Autowired
- private ApplicationContext ctx;
-
@ConditionalOnMissingBean
@Bean
public ThreadPoolTaskExecutor batchExecutor() {
@@ -192,9 +184,9 @@ public class IdRepoRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- public JAXRSBeanValidationInInterceptor validationInInterceptor() {
+ public JAXRSBeanValidationInInterceptor validationInInterceptor(final BeanValidationProvider validationProvider) {
JAXRSBeanValidationInInterceptor validationInInterceptor = new JAXRSBeanValidationInInterceptor();
- validationInInterceptor.setProvider(validationProvider());
+ validationInInterceptor.setProvider(validationProvider);
return validationInInterceptor;
}
@@ -215,20 +207,18 @@ public class IdRepoRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RestServiceExceptionMapper restServiceExceptionMapper(final Environment env) {
return new RestServiceExceptionMapper(env);
}
@ConditionalOnMissingBean
@Bean
- public SearchContextProvider searchContextProvider() {
+ public ContextProvider<SearchContext> searchContextProvider() {
return new SearchContextProvider();
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public CheckDomainFilter checkDomainFilter(final DomainHolder domainHolder) {
return new CheckDomainFilter(domainHolder);
}
@@ -245,17 +235,14 @@ public class IdRepoRESTCXFContext {
return new AddETagFilter();
}
- private String version() {
- return ctx.getEnvironment().getProperty("version");
- }
-
@ConditionalOnMissingBean
@Bean
- public OpenApiFeature openapiFeature() {
+ public OpenApiFeature openapiFeature(final ApplicationContext ctx) {
+ String version = ctx.getEnvironment().getProperty("version");
OpenApiFeature openapiFeature = new OpenApiFeature();
openapiFeature.setTitle("Apache Syncope");
- openapiFeature.setVersion(version());
- openapiFeature.setDescription("Apache Syncope " + version());
+ openapiFeature.setVersion(version);
+ openapiFeature.setDescription("Apache Syncope " + version);
openapiFeature.setContactName("The Apache Syncope community");
openapiFeature.setContactEmail("dev@syncope.apache.org");
openapiFeature.setContactUrl("https://syncope.apache.org");
@@ -284,8 +271,20 @@ public class IdRepoRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public Server restContainer(
+ final AddETagFilter addETagFilter,
+ final AddDomainFilter addDomainFilter,
+ final ContextProvider<SearchContext> searchContextProvider,
+ final JacksonYAMLProvider yamlProvider,
+ final JacksonXMLProvider xmlProvider,
+ final JacksonJsonProvider jsonProvider,
+ final DateParamConverterProvider dateParamConverterProvider,
+ final JAXRSBeanValidationInInterceptor validationInInterceptor,
+ final GZIPInInterceptor gzipInInterceptor,
+ final GZIPOutInterceptor gzipOutInterceptor,
+ final OpenApiFeature openapiFeature,
+ final Bus bus,
+ final ApplicationContext ctx,
final CheckDomainFilter checkDomainFilter,
final RestServiceExceptionMapper restServiceExceptionMapper) {
@@ -304,23 +303,23 @@ public class IdRepoRESTCXFContext {
restContainer.setProperties(properties);
restContainer.setProviders(List.of(
- dateParamConverterProvider(),
- jsonProvider(),
- xmlProvider(),
- yamlProvider(),
+ dateParamConverterProvider,
+ jsonProvider,
+ xmlProvider,
+ yamlProvider,
restServiceExceptionMapper,
- searchContextProvider(),
+ searchContextProvider,
checkDomainFilter,
- addDomainFilter(),
- addETagFilter()));
+ addDomainFilter,
+ addETagFilter));
restContainer.setInInterceptors(List.of(
- gzipInInterceptor(),
- validationInInterceptor()));
+ gzipInInterceptor,
+ validationInInterceptor));
- restContainer.setOutInterceptors(List.of(gzipOutInterceptor()));
+ restContainer.setOutInterceptors(List.of(gzipOutInterceptor));
- restContainer.setFeatures(List.of(openapiFeature()));
+ restContainer.setFeatures(List.of(openapiFeature));
restContainer.setApplicationContext(ctx);
return restContainer.create();
@@ -336,148 +335,130 @@ public class IdRepoRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AccessTokenService accessTokenService(final AccessTokenLogic accessTokenLogic) {
return new AccessTokenServiceImpl(accessTokenLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public AnyObjectService anyObjectService(final AnyObjectDAO anyObjectDAO, final AnyObjectLogic anyObjectLogic) {
+ public AnyObjectService anyObjectService(final AnyObjectDAO anyObjectDAO, final AnyObjectLogic anyObjectLogic,
+ final SearchCondVisitor searchCondVisitor) {
return new AnyObjectServiceImpl(searchCondVisitor, anyObjectDAO, anyObjectLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyTypeClassService anyTypeClassService(final AnyTypeClassLogic anyTypeClassLogic) {
return new AnyTypeClassServiceImpl(anyTypeClassLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyTypeService anyTypeService(final AnyTypeLogic anyTypeLogic) {
return new AnyTypeServiceImpl(anyTypeLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ApplicationService applicationService(final ApplicationLogic applicationLogic) {
return new ApplicationServiceImpl(applicationLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuditService auditService(final AuditLogic auditLogic) {
return new AuditServiceImpl(auditLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public DelegationService delegationService(final DelegationLogic delegationLogic) {
return new DelegationServiceImpl(delegationLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public DynRealmService dynRealmService(final DynRealmLogic dynRealmLogic) {
return new DynRealmServiceImpl(dynRealmLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public GroupService groupService(final GroupDAO groupDAO, final GroupLogic groupLogic) {
+ public GroupService groupService(final GroupDAO groupDAO, final GroupLogic groupLogic,
+ final SearchCondVisitor searchCondVisitor) {
return new GroupServiceImpl(searchCondVisitor, groupDAO, groupLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ImplementationService implementationService(final ImplementationLogic implementationLogic) {
return new ImplementationServiceImpl(implementationLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public MailTemplateService mailTemplateService(final MailTemplateLogic mailTemplateLogic) {
return new MailTemplateServiceImpl(mailTemplateLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public NotificationService notificationService(final NotificationLogic notificationLogic) {
return new NotificationServiceImpl(notificationLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public PolicyService policyService(final PolicyLogic policyLogic) {
return new PolicyServiceImpl(policyLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public RealmService realmService(final RealmLogic realmLogic) {
return new RealmServiceImpl(realmLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public RelationshipTypeService relationshipTypeService(final RelationshipTypeLogic relationshipTypeLogic) {
return new RelationshipTypeServiceImpl(relationshipTypeLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ReportService reportService(final ReportLogic reportLogic) {
return new ReportServiceImpl(reportLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ReportTemplateService reportTemplateService(final ReportTemplateLogic reportTemplateLogic) {
return new ReportTemplateServiceImpl(reportTemplateLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public RoleService roleService(final RoleLogic roleLogic) {
return new RoleServiceImpl(roleLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SchemaService schemaService(final SchemaLogic schemaLogic) {
return new SchemaServiceImpl(schemaLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SecurityQuestionService securityQuestionService(final SecurityQuestionLogic securityQuestionLogic) {
return new SecurityQuestionServiceImpl(securityQuestionLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SyncopeService syncopeService(
+ final Bus bus,
final SyncopeLogic syncopeLogic,
final ThreadPoolTaskExecutor batchExecutor,
final BatchDAO batchDAO,
@@ -488,22 +469,20 @@ public class IdRepoRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public TaskService taskService(final TaskLogic taskLogic) {
return new TaskServiceImpl(taskLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserSelfService userSelfService(final UserLogic userLogic, final SyncopeLogic syncopeLogic) {
return new UserSelfServiceImpl(userLogic, syncopeLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public UserService userService(final UserDAO userDAO, final UserLogic userLogic) {
+ public UserService userService(final UserDAO userDAO, final UserLogic userLogic,
+ final SearchCondVisitor searchCondVisitor) {
return new UserServiceImpl(searchCondVisitor, userDAO, userLogic);
}
}
diff --git a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java
index cd30151..05e0e30 100644
--- a/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java
+++ b/core/idrepo/rest-cxf/src/test/java/org/apache/syncope/core/rest/cxf/service/IdRepoRESTCXFTestContext.java
@@ -37,7 +37,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class IdRepoRESTCXFTestContext {
@Autowired
@@ -75,9 +75,10 @@ public class IdRepoRESTCXFTestContext {
}
@Bean
- public JAXRSBeanValidationInInterceptor validationInInterceptor() {
+ public JAXRSBeanValidationInInterceptor validationInInterceptor(
+ final BeanValidationProvider validationProvider) {
JAXRSBeanValidationInInterceptor validationInInterceptor = new JAXRSBeanValidationInInterceptor();
- validationInInterceptor.setProvider(validationProvider());
+ validationInInterceptor.setProvider(validationProvider);
return validationInInterceptor;
}
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/JPAJSONPersistenceContext.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/JPAJSONPersistenceContext.java
index b07658b..8a3312a 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/JPAJSONPersistenceContext.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/JPAJSONPersistenceContext.java
@@ -48,7 +48,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public abstract class JPAJSONPersistenceContext {
@Autowired
@@ -59,7 +59,6 @@ public abstract class JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "jpaJSONAnyObjectDAO")
@Bean
- @Autowired
public AnyObjectDAO anyObjectDAO(
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainSchemaDAO plainSchemaDAO,
@@ -82,7 +81,6 @@ public abstract class JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "jpaJSONGroupDAO")
@Bean
- @Autowired
public GroupDAO groupDAO(
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainSchemaDAO plainSchemaDAO,
@@ -125,7 +123,6 @@ public abstract class JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "jpaJSONUserDAO")
@Bean
- @Autowired
public UserDAO userDAO(
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainSchemaDAO plainSchemaDAO,
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/MyJPAJSONPersistenceContext.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/MyJPAJSONPersistenceContext.java
index da88cba..ab01aac 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/MyJPAJSONPersistenceContext.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/MyJPAJSONPersistenceContext.java
@@ -36,7 +36,6 @@ import org.apache.syncope.core.persistence.jpa.dao.MyJPAJSONAnySearchDAO;
import org.apache.syncope.core.persistence.jpa.dao.MyJPAJSONAuditConfDAO;
import org.apache.syncope.core.persistence.jpa.dao.MyJPAJSONPlainSchemaDAO;
import org.apache.syncope.core.persistence.jpa.entity.MyJPAJSONEntityFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
@@ -53,14 +52,12 @@ public class MyJPAJSONPersistenceContext extends JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "myJPAJSONAnyDAO")
@Bean
- @Autowired
public JPAJSONAnyDAO anyDAO(final @Lazy PlainSchemaDAO plainSchemaDAO) {
return new MyJPAJSONAnyDAO(plainSchemaDAO);
}
@ConditionalOnMissingBean(name = "myJPAJSONAnySearchDAO")
@Bean
- @Autowired
public AnySearchDAO anySearchDAO(
final @Lazy RealmDAO realmDAO,
final @Lazy DynRealmDAO dynRealmDAO,
@@ -90,7 +87,6 @@ public class MyJPAJSONPersistenceContext extends JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "myJPAJSONPlainSchemaDAO")
@Bean
- @Autowired
public PlainSchemaDAO plainSchemaDAO(
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainAttrDAO plainAttrDAO,
diff --git a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/PGJPAJSONPersistenceContext.java b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/PGJPAJSONPersistenceContext.java
index be63b58..88e2949 100644
--- a/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/PGJPAJSONPersistenceContext.java
+++ b/core/persistence-jpa-json/src/main/java/org/apache/syncope/core/persistence/jpa/PGJPAJSONPersistenceContext.java
@@ -36,7 +36,6 @@ import org.apache.syncope.core.persistence.jpa.dao.PGJPAJSONAnySearchDAO;
import org.apache.syncope.core.persistence.jpa.dao.PGJPAJSONAuditConfDAO;
import org.apache.syncope.core.persistence.jpa.dao.PGJPAJSONPlainSchemaDAO;
import org.apache.syncope.core.persistence.jpa.entity.PGJPAJSONEntityFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
@@ -53,14 +52,12 @@ public class PGJPAJSONPersistenceContext extends JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "pgJPAJSONAnyDAO")
@Bean
- @Autowired
public JPAJSONAnyDAO anyDAO(final @Lazy PlainSchemaDAO plainSchemaDAO) {
return new PGJPAJSONAnyDAO(plainSchemaDAO);
}
@ConditionalOnMissingBean(name = "pgJPAJSONAnySearchDAO")
@Bean
- @Autowired
public AnySearchDAO anySearchDAO(
final @Lazy RealmDAO realmDAO,
final @Lazy DynRealmDAO dynRealmDAO,
@@ -90,7 +87,6 @@ public class PGJPAJSONPersistenceContext extends JPAJSONPersistenceContext {
@ConditionalOnMissingBean(name = "pgJPAJSONPlainSchemaDAO")
@Bean
- @Autowired
public PlainSchemaDAO plainSchemaDAO(
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainAttrDAO plainAttrDAO,
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
index 0049087..17593f9 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/MasterDomain.java
@@ -29,7 +29,7 @@ import javax.sql.DataSource;
import org.apache.syncope.common.lib.SyncopeConstants;
import org.apache.syncope.core.persistence.jpa.spring.CommonEntityManagerFactoryConf;
import org.apache.syncope.core.persistence.jpa.spring.DomainEntityManagerFactoryBean;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -45,21 +45,12 @@ import org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter;
import org.springframework.transaction.PlatformTransactionManager;
@EnableConfigurationProperties(PersistenceProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class MasterDomain {
- @Autowired
- private CommonEntityManagerFactoryConf commonEMFConf;
-
- @Autowired
- private ResourceLoader resourceLoader;
-
- @Autowired
- private PersistenceProperties props;
-
@ConditionalOnMissingBean(name = "MasterDataSource")
@Bean(name = "MasterDataSource")
- public JndiObjectFactoryBean masterDataSource() {
+ public JndiObjectFactoryBean masterDataSource(final PersistenceProperties props) {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setDriverClassName(props.getDomain().get(0).getJdbcDriver());
hikariConfig.setJdbcUrl(props.getDomain().get(0).getJdbcURL());
@@ -77,7 +68,10 @@ public class MasterDomain {
@ConditionalOnMissingBean(name = "MasterDataSourceInitializer")
@Bean(name = "MasterDataSourceInitializer")
- public DataSourceInitializer masterDataSourceInitializer() {
+ public DataSourceInitializer masterDataSourceInitializer(
+ final PersistenceProperties props,
+ @Qualifier("MasterDataSource")
+ final JndiObjectFactoryBean masterDataSource) {
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
databasePopulator.setContinueOnError(true);
databasePopulator.setIgnoreFailedDrops(true);
@@ -85,7 +79,7 @@ public class MasterDomain {
databasePopulator.addScript(new ClassPathResource("/audit/" + props.getDomain().get(0).getAuditSql()));
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
- dataSourceInitializer.setDataSource((DataSource) Objects.requireNonNull(masterDataSource().getObject()));
+ dataSourceInitializer.setDataSource((DataSource) Objects.requireNonNull(masterDataSource.getObject()));
dataSourceInitializer.setEnabled(true);
dataSourceInitializer.setDatabasePopulator(databasePopulator);
return dataSourceInitializer;
@@ -94,7 +88,11 @@ public class MasterDomain {
@ConditionalOnMissingBean(name = "MasterEntityManagerFactory")
@DependsOn("commonEMFConf")
@Bean(name = "MasterEntityManagerFactory")
- public DomainEntityManagerFactoryBean masterEntityManagerFactory() {
+ public DomainEntityManagerFactoryBean masterEntityManagerFactory(
+ final PersistenceProperties props,
+ @Qualifier("MasterDataSource")
+ final JndiObjectFactoryBean masterDataSource,
+ final CommonEntityManagerFactoryConf commonEMFConf) {
OpenJpaVendorAdapter vendorAdapter = new OpenJpaVendorAdapter();
vendorAdapter.setShowSql(false);
vendorAdapter.setGenerateDdl(true);
@@ -103,7 +101,7 @@ public class MasterDomain {
DomainEntityManagerFactoryBean masterEntityManagerFactory = new DomainEntityManagerFactoryBean();
masterEntityManagerFactory.setMappingResources(props.getDomain().get(0).getOrm());
masterEntityManagerFactory.setPersistenceUnitName(SyncopeConstants.MASTER_DOMAIN);
- masterEntityManagerFactory.setDataSource(Objects.requireNonNull((DataSource) masterDataSource().getObject()));
+ masterEntityManagerFactory.setDataSource(Objects.requireNonNull((DataSource) masterDataSource.getObject()));
masterEntityManagerFactory.setJpaVendorAdapter(vendorAdapter);
masterEntityManagerFactory.setCommonEntityManagerFactoryConf(commonEMFConf);
@@ -118,22 +116,26 @@ public class MasterDomain {
@ConditionalOnMissingBean(name = "MasterTransactionManager")
@Bean(name = { "MasterTransactionManager", "Master" })
- public PlatformTransactionManager transactionManager() {
- return new JpaTransactionManager(Objects.requireNonNull(masterEntityManagerFactory().getObject()));
+ public PlatformTransactionManager transactionManager(
+ @Qualifier("MasterEntityManagerFactory")
+ final DomainEntityManagerFactoryBean masterEntityManagerFactory) {
+ return new JpaTransactionManager(Objects.requireNonNull(masterEntityManagerFactory.getObject()));
}
@Bean(name = "MasterContentXML")
- public InputStream masterContentXML() throws IOException {
+ public InputStream masterContentXML(final ResourceLoader resourceLoader,
+ final PersistenceProperties props) throws IOException {
return resourceLoader.getResource(props.getDomain().get(0).getContent()).getInputStream();
}
@Bean(name = "MasterKeymasterConfParamsJSON")
- public InputStream masterKeymasterConfParamsJSON() throws IOException {
+ public InputStream masterKeymasterConfParamsJSON(final ResourceLoader resourceLoader,
+ final PersistenceProperties props) throws IOException {
return resourceLoader.getResource(props.getDomain().get(0).getKeymasterConfParams()).getInputStream();
}
@Bean(name = "MasterDatabaseSchema")
- public String masterDatabaseSchema() {
+ public String masterDatabaseSchema(final PersistenceProperties props) {
return props.getDomain().get(0).getDbSchema();
}
}
diff --git a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/PersistenceContext.java b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/PersistenceContext.java
index 21a5def..1385c89 100644
--- a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/PersistenceContext.java
+++ b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/PersistenceContext.java
@@ -134,7 +134,6 @@ import org.apache.syncope.core.persistence.jpa.spring.MultiJarAwarePersistenceUn
import org.apache.syncope.core.spring.security.SecurityProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -147,7 +146,7 @@ import org.springframework.core.io.ResourceLoader;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
@EnableConfigurationProperties(PersistenceProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class PersistenceContext {
private static final Logger OPENJPA_LOG = LoggerFactory.getLogger("org.apache.openjpa");
@@ -157,21 +156,6 @@ public class PersistenceContext {
return new DomainTransactionInterceptorInjector();
}
- @Autowired
- private PersistenceProperties persistenceProperties;
-
- @Autowired
- private SecurityProperties securityProperties;
-
- @Autowired
- private ResourceLoader resourceLoader;
-
- @Autowired
- private ApplicationEventPublisher publisher;
-
- @Autowired
- private Environment env;
-
@ConditionalOnMissingBean
@Bean
public SearchCondVisitor searchCondVisitor() {
@@ -185,7 +169,7 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- public CommonEntityManagerFactoryConf commonEMFConf() {
+ public CommonEntityManagerFactoryConf commonEMFConf(final PersistenceProperties persistenceProperties) {
CommonEntityManagerFactoryConf commonEMFConf = new CommonEntityManagerFactoryConf();
commonEMFConf.setPackagesToScan("org.apache.syncope.core.persistence.jpa.entity");
commonEMFConf.setValidationMode(ValidationMode.NONE);
@@ -218,7 +202,9 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- public XMLContentLoader xmlContentLoader() {
+ public XMLContentLoader xmlContentLoader(final PersistenceProperties persistenceProperties,
+ final ResourceLoader resourceLoader,
+ final Environment env) {
return new XMLContentLoader(
resourceLoader.getResource(persistenceProperties.getViewsXML()),
resourceLoader.getResource(persistenceProperties.getIndexesXML()),
@@ -227,27 +213,24 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public XMLContentExporter xmlContentExporter(final DomainHolder domainHolder, final RealmDAO realmDAO) {
return new XMLContentExporter(domainHolder, realmDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public KeymasterConfParamLoader keymasterConfParamLoader(final ConfParamOps confParamOps) {
return new KeymasterConfParamLoader(confParamOps);
}
@ConditionalOnMissingBean
@Bean
- public DomainRegistry domainRegistry() {
+ public DomainRegistry domainRegistry(final Environment env) {
return new DomainConfFactory(env);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public RuntimeDomainLoader runtimeDomainLoader(
final DomainHolder domainHolder,
final DomainRegistry domainRegistry) {
@@ -257,8 +240,9 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public StartupDomainLoader startupDomainLoader(
+ final PersistenceProperties persistenceProperties,
+ final ResourceLoader resourceLoader,
final DomainOps domainOps,
final DomainHolder domainHolder,
final DomainRegistry domainRegistry) {
@@ -274,7 +258,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyUtilsFactory anyUtilsFactory(
final @Lazy UserDAO userDAO,
final @Lazy GroupDAO groupDAO,
@@ -298,7 +281,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public TaskUtilsFactory taskUtilsFactory(final @Lazy EntityFactory entityFactory) {
return new JPATaskUtilsFactory(entityFactory);
}
@@ -311,14 +293,12 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ApplicationDAO applicationDAO(final RoleDAO roleDAO, final @Lazy UserDAO userDAO) {
return new JPAApplicationDAO(roleDAO, userDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyMatchDAO anyMatchDAO(
final @Lazy UserDAO userDAO,
final @Lazy GroupDAO groupDAO,
@@ -332,8 +312,8 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyObjectDAO anyObjectDAO(
+ final ApplicationEventPublisher publisher,
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainSchemaDAO plainSchemaDAO,
final @Lazy DerSchemaDAO derSchemaDAO,
@@ -353,7 +333,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnySearchDAO anySearchDAO(
final RealmDAO realmDAO,
final @Lazy DynRealmDAO dynRealmDAO,
@@ -377,14 +356,12 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyTypeDAO anyTypeDAO(final RemediationDAO remediationDAO) {
return new JPAAnyTypeDAO(remediationDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyTypeClassDAO anyTypeClassDAO(
final AnyTypeDAO anyTypeDAO,
final PlainSchemaDAO plainSchemaDAO,
@@ -428,7 +405,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConnInstanceDAO connInstanceDAO(final @Lazy ExternalResourceDAO resourceDAO) {
return new JPAConnInstanceDAO(resourceDAO);
}
@@ -441,15 +417,14 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public DerSchemaDAO derSchemaDAO(final @Lazy ExternalResourceDAO resourceDAO) {
return new JPADerSchemaDAO(resourceDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public DynRealmDAO dynRealmDAO(
+ final ApplicationEventPublisher publisher,
final @Lazy UserDAO userDAO,
final @Lazy GroupDAO groupDAO,
final @Lazy AnyObjectDAO anyObjectDAO,
@@ -469,8 +444,8 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public GroupDAO groupDAO(
+ final ApplicationEventPublisher publisher,
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainSchemaDAO plainSchemaDAO,
final @Lazy DerSchemaDAO derSchemaDAO,
@@ -510,7 +485,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public NotificationDAO notificationDAO(final TaskDAO taskDAO) {
return new JPANotificationDAO(taskDAO);
}
@@ -541,7 +515,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public PlainSchemaDAO plainSchemaDAO(
final AnyUtilsFactory anyUtilsFactory,
final PlainAttrDAO plainAttrDAO,
@@ -552,7 +525,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public PolicyDAO policyDAO(
final @Lazy RealmDAO realmDAO,
final @Lazy ExternalResourceDAO resourceDAO) {
@@ -562,7 +534,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RealmDAO realmDAO(final @Lazy RoleDAO roleDAO) {
return new JPARealmDAO(roleDAO);
}
@@ -599,7 +570,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ExternalResourceDAO resourceDAO(
final TaskDAO taskDAO,
final AnyObjectDAO anyObjectDAO,
@@ -614,8 +584,8 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RoleDAO roleDAO(
+ final ApplicationEventPublisher publisher,
final @Lazy AnyMatchDAO anyMatchDAO,
final @Lazy AnySearchDAO anySearchDAO,
final DelegationDAO delegationDAO,
@@ -644,7 +614,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SecurityQuestionDAO securityQuestionDAO(final UserDAO userDAO) {
return new JPASecurityQuestionDAO(userDAO);
}
@@ -657,22 +626,21 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public TaskDAO taskDAO(final RemediationDAO remediationDAO) {
return new JPATaskDAO(remediationDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public TaskExecDAO taskExecDAO(final TaskDAO taskDAO) {
return new JPATaskExecDAO(taskDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserDAO userDAO(
+ final ApplicationEventPublisher publisher,
+ final SecurityProperties securityProperties,
final AnyUtilsFactory anyUtilsFactory,
final @Lazy PlainSchemaDAO plainSchemaDAO,
final @Lazy DerSchemaDAO derSchemaDAO,
@@ -699,7 +667,6 @@ public class PersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public VirSchemaDAO virSchemaDAO(final @Lazy ExternalResourceDAO resourceDAO) {
return new JPAVirSchemaDAO(resourceDAO);
}
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/PersistenceTestContext.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/PersistenceTestContext.java
index cc2f282..c7048c7 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/PersistenceTestContext.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/PersistenceTestContext.java
@@ -30,7 +30,6 @@ import org.apache.syncope.core.provisioning.api.ConnectorManager;
import org.apache.syncope.core.spring.security.DefaultPasswordGenerator;
import org.apache.syncope.core.spring.security.PasswordGenerator;
import org.apache.syncope.core.spring.security.SecurityProperties;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -41,7 +40,7 @@ import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.Resource;
@Import(PersistenceContext.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class PersistenceTestContext {
@Bean
@@ -76,7 +75,6 @@ public class PersistenceTestContext {
}
@Bean
- @Autowired
public TestInitializer testInitializer(
final StartupDomainLoader domainLoader,
final DomainHolder domainHolder,
@@ -107,7 +105,6 @@ public class PersistenceTestContext {
}
@Bean
- @Autowired
public DomainOps domainOps(final DomainRegistry domainRegistry) {
return new DummyDomainOps(domainRegistry);
}
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ProvisioningContext.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ProvisioningContext.java
index 96ab095..c3f267b 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ProvisioningContext.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/ProvisioningContext.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.core.provisioning.java;
-import com.fasterxml.jackson.core.JsonProcessingException;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
@@ -179,7 +178,7 @@ import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ApplicationContext;
@@ -201,8 +200,8 @@ import org.springframework.transaction.PlatformTransactionManager;
@EnableAsync
@EnableConfigurationProperties(ProvisioningProperties.class)
-@Configuration
-public class ProvisioningContext implements AsyncConfigurer {
+@Configuration(proxyBeanMethods = false)
+public class ProvisioningContext {
private static final Logger LOG = LoggerFactory.getLogger(ProvisioningContext.class);
@@ -212,33 +211,6 @@ public class ProvisioningContext implements AsyncConfigurer {
@Resource(name = "MasterTransactionManager")
private PlatformTransactionManager masterTransactionManager;
- @Autowired
- private ProvisioningProperties provisioningProperties;
-
- @Autowired
- private SecurityProperties securityProperties;
-
- @Autowired
- private EntityFactory entityFactory;
-
- @Autowired
- private AnyUtilsFactory anyUtilsFactory;
-
- @Autowired
- private TaskUtilsFactory taskUtilsFactory;
-
- @Autowired
- private PasswordGenerator passwordGenerator;
-
- @Autowired
- private SearchCondVisitor searchCondVisitor;
-
- @Autowired
- private DomainHolder domainHolder;
-
- @Autowired
- private ApplicationContext ctx;
-
@ConditionalOnMissingBean
@Bean
public AsyncConnectorFacade asyncConnectorFacade() {
@@ -252,7 +224,7 @@ public class ProvisioningContext implements AsyncConfigurer {
*/
@Bean
@Primary
- public Executor asyncConnectorFacadeExecutor() {
+ public ThreadPoolTaskExecutor asyncConnectorFacadeExecutor(final ProvisioningProperties provisioningProperties) {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(provisioningProperties.getAsyncConnectorFacadeExecutor().getCorePoolSize());
executor.setMaxPoolSize(provisioningProperties.getAsyncConnectorFacadeExecutor().getMaxPoolSize());
@@ -263,18 +235,26 @@ public class ProvisioningContext implements AsyncConfigurer {
return executor;
}
- @Override
- public Executor getAsyncExecutor() {
- return asyncConnectorFacadeExecutor();
+ @Bean
+ public AsyncConfigurer asyncConfigurer(@Qualifier("asyncConnectorFacadeExecutor")
+ final ThreadPoolTaskExecutor asyncConnectorFacadeExecutor) {
+ return new AsyncConfigurer() {
+ @Override
+ public Executor getAsyncExecutor() {
+ return asyncConnectorFacadeExecutor;
+ }
+ };
}
/**
* Used by {@link org.apache.syncope.core.provisioning.java.propagation.PriorityPropagationTaskExecutor}.
*
- * @return executor
+ * @param provisioningProperties the provisioning properties
+ * @return executor thread pool task executor
*/
@Bean
- public ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor() {
+ public ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor(
+ final ProvisioningProperties provisioningProperties) {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(provisioningProperties.getPropagationTaskExecutorAsyncExecutor().getCorePoolSize());
executor.setMaxPoolSize(provisioningProperties.getPropagationTaskExecutorAsyncExecutor().getMaxPoolSize());
@@ -286,7 +266,7 @@ public class ProvisioningContext implements AsyncConfigurer {
}
@Bean
- public SchedulerDBInit quartzDataSourceInit() throws JsonProcessingException {
+ public SchedulerDBInit quartzDataSourceInit(final ProvisioningProperties provisioningProperties) {
SchedulerDBInit init = new SchedulerDBInit();
init.setDataSource(masterDataSource);
@@ -303,7 +283,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@DependsOn("quartzDataSourceInit")
@Lazy(false)
@Bean
- public SchedulerFactoryBean scheduler() {
+ public SchedulerFactoryBean scheduler(final ApplicationContext ctx,
+ final ProvisioningProperties provisioningProperties) {
SchedulerFactoryBean scheduler = new SchedulerFactoryBean();
scheduler.setAutoStartup(true);
scheduler.setApplicationContext(ctx);
@@ -334,14 +315,16 @@ public class ProvisioningContext implements AsyncConfigurer {
}
@Bean
- public SchedulerShutdown schedulerShutdown() {
+ public SchedulerShutdown schedulerShutdown(final ApplicationContext ctx) {
return new SchedulerShutdown(ctx);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public JobManager jobManager(
+ final ProvisioningProperties provisioningProperties,
+ final DomainHolder domainHolder,
+ final SecurityProperties securityProperties,
final SchedulerFactoryBean scheduler,
final TaskDAO taskDAO,
final ReportDAO reportDAO,
@@ -362,7 +345,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public JavaMailSender mailSender() throws IllegalArgumentException, NamingException, IOException {
+ public JavaMailSender mailSender(final ProvisioningProperties provisioningProperties)
+ throws IllegalArgumentException, IOException {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl() {
@Override
@@ -431,8 +415,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConnectorManager connectorManager(
+ final EntityFactory entityFactory,
final ConnIdBundleManager connIdBundleManager,
final RealmDAO realmDAO,
final ExternalResourceDAO resourceDAO,
@@ -450,15 +434,14 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConnectorLoader connectorLoader(final ConnectorManager connectorManager) {
return new ConnectorLoader(connectorManager);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public InboundMatcher inboundMatcher(
+ final AnyUtilsFactory anyUtilsFactory,
final UserDAO userDAO,
final AnyObjectDAO anyObjectDAO,
final GroupDAO groupDAO,
@@ -482,8 +465,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public OutboundMatcher outboundMatcher(
+ final AnyUtilsFactory anyUtilsFactory,
final MappingManager mappingManager,
final UserDAO userDAO,
final VirSchemaDAO virSchemaDAO,
@@ -494,14 +477,14 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public DerAttrHandler derAttrHandler() {
+ public DerAttrHandler derAttrHandler(final AnyUtilsFactory anyUtilsFactory) {
return new DefaultDerAttrHandler(anyUtilsFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public VirAttrHandler virAttrHandler(
+ final AnyUtilsFactory anyUtilsFactory,
final ConnectorManager connectorManager,
final VirAttrCache virAttrCache,
@Lazy final OutboundMatcher outboundMatcher) {
@@ -511,8 +494,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public MappingManager mappingManager(
+ final PasswordGenerator passwordGenerator,
+ final AnyUtilsFactory anyUtilsFactory,
final AnyTypeDAO anyTypeDAO,
final UserDAO userDAO,
final AnyObjectDAO anyObjectDAO,
@@ -543,15 +527,15 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public TemplateUtils templateUtils(final UserDAO userDAO, final GroupDAO groupDAO) {
return new TemplateUtils(userDAO, groupDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConnObjectUtils connObjectUtils(
+ final PasswordGenerator passwordGenerator,
+ final AnyUtilsFactory anyUtilsFactory,
final MappingManager mappingManager,
final TemplateUtils templateUtils,
final RealmDAO realmDAO,
@@ -570,8 +554,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public PropagationManager propagationManager(
+ final EntityFactory entityFactory,
+ final AnyUtilsFactory anyUtilsFactory,
final VirSchemaDAO virSchemaDAO,
final ExternalResourceDAO resourceDAO,
final ConnObjectUtils connObjectUtils,
@@ -590,14 +575,14 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public ConnIdBundleManager connIdBundleManager() {
+ public ConnIdBundleManager connIdBundleManager(final ProvisioningProperties provisioningProperties) {
return new DefaultConnIdBundleManager(provisioningProperties.getConnIdLocation());
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public IntAttrNameParser intAttrNameParser(
+ public IntAttrNameParser intAttrNameParser(
+ final AnyUtilsFactory anyUtilsFactory,
final PlainSchemaDAO plainSchemaDAO,
final DerSchemaDAO derSchemaDAO,
final VirSchemaDAO virSchemaDAO) {
@@ -607,8 +592,12 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public PropagationTaskExecutor propagationTaskExecutor(
+ @Qualifier("propagationTaskExecutorAsyncExecutor")
+ final ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor,
+ final EntityFactory entityFactory,
+ final TaskUtilsFactory taskUtilsFactory,
+ final AnyUtilsFactory anyUtilsFactory,
final ConnectorManager connectorManager,
final ConnObjectUtils connObjectUtils,
final UserDAO userDAO,
@@ -636,12 +625,11 @@ public class ProvisioningContext implements AsyncConfigurer {
taskUtilsFactory,
entityFactory,
outboundMatcher,
- propagationTaskExecutorAsyncExecutor());
+ propagationTaskExecutorAsyncExecutor);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserProvisioningManager userProvisioningManager(
final UserWorkflowAdapter uwfAdapter,
final PropagationManager propagationManager,
@@ -659,7 +647,6 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public GroupProvisioningManager groupProvisioningManager(
final GroupWorkflowAdapter gwfAdapter,
final PropagationManager propagationManager,
@@ -679,7 +666,6 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyObjectProvisioningManager anyObjectProvisioningManager(
final AnyObjectWorkflowAdapter awfAdapter,
final PropagationManager propagationManager,
@@ -697,7 +683,7 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public VirAttrCache virAttrCache() {
+ public VirAttrCache virAttrCache(final ProvisioningProperties provisioningProperties) {
VirAttrCache virAttrCache = new CaffeineVirAttrCache();
virAttrCache.setCacheSpec(provisioningProperties.getVirAttrCacheSpec());
return virAttrCache;
@@ -705,8 +691,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public NotificationManager notificationManager(
+ final EntityFactory entityFactory,
+ final SearchCondVisitor searchCondVisitor,
final DerSchemaDAO derSchemaDAO,
final VirSchemaDAO virSchemaDAO,
final NotificationDAO notificationDAO,
@@ -747,21 +734,20 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuditManager auditManager(final AuditConfDAO auditConfDAO) {
return new DefaultAuditManager(auditConfDAO);
}
@ConditionalOnMissingBean
@Bean
- public SystemLoadReporterJob systemLoadReporterJob() {
+ public SystemLoadReporterJob systemLoadReporterJob(final ApplicationContext ctx) {
return new SystemLoadReporterJob(ctx);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public NotificationJobDelegate notificationJobDelegate(
+ final EntityFactory entityFactory,
final TaskDAO taskDAO,
final JavaMailSender mailSender,
final AuditManager auditManager,
@@ -777,22 +763,24 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public NotificationJob notificationJob(final NotificationJobDelegate delegate) {
+ public NotificationJob notificationJob(final NotificationJobDelegate delegate,
+ final DomainHolder domainHolder,
+ final SecurityProperties securityProperties) {
return new NotificationJob(securityProperties, domainHolder, delegate);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ReportJobDelegate reportJobDelegate(final ReportDAO reportDAO, final ReportExecDAO reportExecDAO) {
+ public ReportJobDelegate reportJobDelegate(final ReportDAO reportDAO, final ReportExecDAO reportExecDAO,
+ final EntityFactory entityFactory) {
return new DefaultReportJobDelegate(reportDAO, reportExecDAO, entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public AccessTokenDataBinder accessTokenDataBinder(
+ final EntityFactory entityFactory,
+ final SecurityProperties securityProperties,
final AccessTokenJWSSigner jwsSigner,
final AccessTokenDAO accessTokenDAO,
final ConfParamOps confParamOps,
@@ -809,8 +797,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyObjectDataBinder anyObjectDataBinder(
+ final EntityFactory entityFactory,
+ final AnyUtilsFactory anyUtilsFactory,
final AnyTypeDAO anyTypeDAO,
final RealmDAO realmDAO,
final AnyTypeClassDAO anyTypeClassDAO,
@@ -851,8 +840,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyTypeClassDataBinder anyTypeClassDataBinder(
+ final EntityFactory entityFactory,
final PlainSchemaDAO plainSchemaDAO,
final DerSchemaDAO derSchemaDAO,
final VirSchemaDAO virSchemaDAO,
@@ -863,8 +852,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyTypeDataBinder anyTypeDataBinder(
+ final EntityFactory entityFactory,
+ final SecurityProperties securityProperties,
final AnyTypeDAO anyTypeDAO,
final AnyTypeClassDAO anyTypeClassDAO,
final AccessTokenDAO accessTokenDAO) {
@@ -879,8 +869,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ApplicationDataBinder applicationDataBinder(final ApplicationDAO applicationDAO) {
+ public ApplicationDataBinder applicationDataBinder(final ApplicationDAO applicationDAO,
+ final EntityFactory entityFactory) {
return new ApplicationDataBinderImpl(applicationDAO, entityFactory);
}
@@ -892,27 +882,27 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public AuthModuleDataBinder authModuleDataBinder() {
+ public AuthModuleDataBinder authModuleDataBinder(final EntityFactory entityFactory) {
return new AuthModuleDataBinderImpl(entityFactory);
}
@ConditionalOnMissingBean
@Bean
- public AuthProfileDataBinder authProfileDataBinder() {
+ public AuthProfileDataBinder authProfileDataBinder(final EntityFactory entityFactory) {
return new AuthProfileDataBinderImpl(entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public ClientAppDataBinder clientAppDataBinder(final PolicyDAO policyDAO) {
+ public ClientAppDataBinder clientAppDataBinder(final PolicyDAO policyDAO,
+ final EntityFactory entityFactory) {
return new ClientAppDataBinderImpl(policyDAO, entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConnInstanceDataBinder connInstanceDataBinder(
+ final EntityFactory entityFactory,
final ConnIdBundleManager connIdBundleManager,
final ConnInstanceDAO connInstanceDAO,
final RealmDAO realmDAO) {
@@ -922,22 +912,25 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public DelegationDataBinder delegationDataBinder(final UserDAO userDAO, final RoleDAO roleDAO) {
+ public DelegationDataBinder delegationDataBinder(final UserDAO userDAO, final RoleDAO roleDAO,
+ final EntityFactory entityFactory) {
return new DelegationDataBinderImpl(userDAO, roleDAO, entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public DynRealmDataBinder dynRealmDataBinder(final AnyTypeDAO anyTypeDAO, final DynRealmDAO dynRealmDAO) {
+ public DynRealmDataBinder dynRealmDataBinder(final AnyTypeDAO anyTypeDAO, final DynRealmDAO dynRealmDAO,
+ final SearchCondVisitor searchCondVisitor,
+ final EntityFactory entityFactory) {
return new DynRealmDataBinderImpl(anyTypeDAO, dynRealmDAO, entityFactory, searchCondVisitor);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public GroupDataBinder groupDataBinder(
+ final EntityFactory entityFactory,
+ final SearchCondVisitor searchCondVisitor,
+ final AnyUtilsFactory anyUtilsFactory,
final AnyTypeDAO anyTypeDAO,
final RealmDAO realmDAO,
final AnyTypeClassDAO anyTypeClassDAO,
@@ -979,14 +972,14 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public ImplementationDataBinder implementationDataBinder() {
+ public ImplementationDataBinder implementationDataBinder(final EntityFactory entityFactory) {
return new ImplementationDataBinderImpl(entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public NotificationDataBinder notificationDataBinder(
+ final EntityFactory entityFactory,
final MailTemplateDAO mailTemplateDAO,
final AnyTypeDAO anyTypeDAO,
final ImplementationDAO implementationDAO,
@@ -1003,14 +996,14 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public OIDCJWKSDataBinder oidcJWKSDataBinder() {
+ public OIDCJWKSDataBinder oidcJWKSDataBinder(final EntityFactory entityFactory) {
return new OIDCJWKSDataBinderImpl(entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public PolicyDataBinder policyDataBinder(
+ final EntityFactory entityFactory,
final ExternalResourceDAO resourceDAO,
final RealmDAO realmDAO,
final AnyTypeDAO anyTypeDAO,
@@ -1021,8 +1014,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RealmDataBinder realmDataBinder(
+ final EntityFactory entityFactory,
final AnyTypeDAO anyTypeDAO,
final ImplementationDAO implementationDAO,
final RealmDAO realmDAO,
@@ -1040,7 +1033,7 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public RelationshipTypeDataBinder relationshipTypeDataBinder() {
+ public RelationshipTypeDataBinder relationshipTypeDataBinder(final EntityFactory entityFactory) {
return new RelationshipTypeDataBinderImpl(entityFactory);
}
@@ -1052,7 +1045,6 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ReportDataBinder reportDataBinder(
final ReportTemplateDAO reportTemplateDAO,
final ReportExecDAO reportExecDAO,
@@ -1064,8 +1056,8 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ResourceDataBinder resourceDataBinder(
+ final EntityFactory entityFactory,
final AnyTypeDAO anyTypeDAO,
final ConnInstanceDAO connInstanceDAO,
final PolicyDAO policyDAO,
@@ -1089,8 +1081,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public RoleDataBinder roleDataBinder(
+ final EntityFactory entityFactory,
+ final SearchCondVisitor searchCondVisitor,
final RealmDAO realmDAO,
final DynRealmDAO dynRealmDAO,
final RoleDAO roleDAO,
@@ -1101,13 +1094,13 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public SAML2IdPEntityDataBinder saml2IdPEntityDataBinder() {
+ public SAML2IdPEntityDataBinder saml2IdPEntityDataBinder(final EntityFactory entityFactory) {
return new SAML2IdPEntityDataBinderImpl(entityFactory);
}
@ConditionalOnMissingBean
@Bean
- public SAML2SPEntityDataBinder saml2SPEntityDataBinder() {
+ public SAML2SPEntityDataBinder saml2SPEntityDataBinder(final EntityFactory entityFactory) {
return new SAML2SPEntityDataBinderImpl(entityFactory);
}
@@ -1119,8 +1112,9 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SchemaDataBinder schemaDataBinder(
+ final EntityFactory entityFactory,
+ final AnyUtilsFactory anyUtilsFactory,
final AnyTypeClassDAO anyTypeClassDAO,
final PlainSchemaDAO plainSchemaDAO,
final DerSchemaDAO derSchemaDAO,
@@ -1143,14 +1137,15 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- public SecurityQuestionDataBinder securityQuestionDataBinder() {
+ public SecurityQuestionDataBinder securityQuestionDataBinder(final EntityFactory entityFactory) {
return new SecurityQuestionDataBinderImpl(entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public TaskDataBinder taskDataBinder(
+ final EntityFactory entityFactory,
+ final TaskUtilsFactory taskUtilsFactory,
final RealmDAO realmDAO,
final ExternalResourceDAO resourceDAO,
final TaskExecDAO taskExecDAO,
@@ -1171,8 +1166,10 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserDataBinder userDataBinder(
+ final EntityFactory entityFactory,
+ final AnyUtilsFactory anyUtilsFactory,
+ final SecurityProperties securityProperties,
final AnyTypeDAO anyTypeDAO,
final RealmDAO realmDAO,
final AnyTypeClassDAO anyTypeClassDAO,
@@ -1226,14 +1223,13 @@ public class ProvisioningContext implements AsyncConfigurer {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public WAConfigDataBinder waConfigDataBinder(final WAConfigDAO waConfigDAO) {
+ public WAConfigDataBinder waConfigDataBinder(final WAConfigDAO waConfigDAO,
+ final EntityFactory entityFactory) {
return new WAConfigDataBinderImpl(waConfigDAO, entityFactory);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public WAClientAppDataBinder waClientAppDataBinder(
final ClientAppDataBinder clientAppDataBinder,
final PolicyDataBinder policyDataBinder,
diff --git a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ProvisioningTestContext.java b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ProvisioningTestContext.java
index 45c35fd..5794382 100644
--- a/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ProvisioningTestContext.java
+++ b/core/provisioning-java/src/test/java/org/apache/syncope/core/provisioning/java/ProvisioningTestContext.java
@@ -29,7 +29,6 @@ import org.apache.syncope.core.persistence.jpa.PersistenceContext;
import org.apache.syncope.core.persistence.jpa.StartupDomainLoader;
import org.apache.syncope.core.spring.security.SecurityContext;
import org.apache.syncope.core.workflow.java.WorkflowContext;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -39,11 +38,10 @@ import org.springframework.context.annotation.PropertySource;
@PropertySource("classpath:core-test.properties")
@Import({ ProvisioningContext.class, SecurityContext.class,
PersistenceContext.class, MasterDomain.class, WorkflowContext.class })
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class ProvisioningTestContext {
@Bean
- @Autowired
public TestInitializer testInitializer(
final StartupDomainLoader domainLoader,
final DomainHolder domainHolder,
@@ -64,7 +62,6 @@ public class ProvisioningTestContext {
}
@Bean
- @Autowired
public DomainOps domainOps(final DomainRegistry domainRegistry) {
return new DummyDomainOps(domainRegistry);
}
diff --git a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java
index c9df1b9..fcdb84c 100644
--- a/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java
+++ b/core/self-keymaster-starter/src/main/java/org/apache/syncope/core/starter/SelfKeymasterContext.java
@@ -61,7 +61,6 @@ import org.apache.syncope.core.spring.security.DefaultCredentialChecker;
import org.apache.syncope.core.spring.security.SecurityProperties;
import org.apache.syncope.core.spring.security.UsernamePasswordAuthenticationProvider;
import org.apache.syncope.core.spring.security.WebSecurityContext;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -75,7 +74,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.type.AnnotatedTypeMetadata;
@EnableConfigurationProperties(KeymasterProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
@AutoConfigureBefore(WebSecurityContext.class)
public class SelfKeymasterContext {
@@ -92,16 +91,11 @@ public class SelfKeymasterContext {
}
}
- @Autowired
- private Bus bus;
-
- @Autowired
- private ApplicationContext ctx;
-
@Conditional(SelfKeymasterCondition.class)
@Bean
- @Autowired
- public Server selfKeymasterContainer(final JacksonJsonProvider jsonProvider) {
+ public Server selfKeymasterContainer(final JacksonJsonProvider jsonProvider,
+ final ApplicationContext ctx,
+ final Bus bus) {
SpringJAXRSServerFactoryBean selfKeymasterContainer = new SpringJAXRSServerFactoryBean();
selfKeymasterContainer.setBus(bus);
selfKeymasterContainer.setAddress("/keymaster");
@@ -128,7 +122,6 @@ public class SelfKeymasterContext {
@Conditional(SelfKeymasterCondition.class)
@Bean
- @Autowired
public UsernamePasswordAuthenticationProvider usernamePasswordAuthenticationProvider(
final DomainOps domainOps,
final AuthDataAccessor dataAccessor,
@@ -148,14 +141,12 @@ public class SelfKeymasterContext {
@Conditional(SelfKeymasterCondition.class)
@Bean
- @Autowired
public ConfParamOps internalConfParamOps(final ConfParamLogic confParamLogic, final KeymasterProperties props) {
return new SelfKeymasterInternalConfParamOps(confParamLogic, props);
}
@Conditional(SelfKeymasterCondition.class)
@Bean
- @Autowired
public ServiceOps internalServiceOps(
final NetworkServiceLogic networkServiceLogic,
final KeymasterProperties props) {
@@ -165,14 +156,12 @@ public class SelfKeymasterContext {
@Conditional(SelfKeymasterCondition.class)
@Bean
- @Autowired
public DomainOps domainOps(final DomainLogic domainLogic, final KeymasterProperties props) {
return new SelfKeymasterInternalDomainOps(domainLogic, props);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConfParamLogic confParamLogic(
final ConfParamDAO confParamDAO,
final SelfKeymasterEntityFactory selfKeymasterEntityFactory) {
@@ -182,7 +171,6 @@ public class SelfKeymasterContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public DomainLogic domainLogic(
final DomainDAO domainDAO,
final SelfKeymasterEntityFactory selfKeymasterEntityFactory,
@@ -193,7 +181,6 @@ public class SelfKeymasterContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public NetworkServiceLogic networkServiceLogic(
final NetworkServiceDAO serviceDAO,
final SelfKeymasterEntityFactory selfKeymasterEntityFactory) {
@@ -227,21 +214,18 @@ public class SelfKeymasterContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ConfParamService confParamService(final ConfParamLogic confParamLogic) {
return new ConfParamServiceImpl(confParamLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public DomainService domainService(final DomainLogic domainLogic) {
return new DomainServiceImpl(domainLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public NetworkServiceService networkServiceService(final NetworkServiceLogic networkServiceLogic) {
return new NetworkServiceServiceImpl(networkServiceLogic);
}
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
index e9d6659..f489e96 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/AuthContextUtils.java
@@ -143,9 +143,10 @@ public final class AuthContextUtils {
}
public static <T> T callAsAdmin(final String domain, final Callable<T> callable) {
+ SecurityProperties properties = ApplicationContextProvider.getBeanFactory().getBean(SecurityProperties.class);
return callAs(
domain,
- ApplicationContextProvider.getBeanFactory().getBean("adminUser", String.class),
+ properties.getAdminUser(),
EntitlementsHolder.getInstance().getValues(),
callable);
}
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecurityContext.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecurityContext.java
index fbde018..56f0244 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecurityContext.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/SecurityContext.java
@@ -29,7 +29,6 @@ import org.apache.syncope.core.spring.security.jws.AccessTokenJWSSigner;
import org.apache.syncope.core.spring.security.jws.AccessTokenJWSVerifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -37,57 +36,27 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.core.GrantedAuthorityDefaults;
@EnableConfigurationProperties(SecurityProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SecurityContext {
private static final Logger LOG = LoggerFactory.getLogger(SecurityContext.class);
- @Autowired
- private SecurityProperties props;
-
@Bean
- public String adminUser() {
- return props.getAdminUser();
- }
-
- @Bean
- public String adminPassword() {
- return props.getAdminPassword();
- }
-
- @Bean
- public CipherAlgorithm adminPasswordAlgorithm() {
+ public CipherAlgorithm adminPasswordAlgorithm(final SecurityProperties props) {
return props.getAdminPasswordAlgorithm();
}
@Bean
- public String anonymousUser() {
- return props.getAnonymousUser();
- }
-
- @Bean
- public String anonymousKey() {
- return props.getAnonymousKey();
- }
-
- @Bean
- public String jwtIssuer() {
- return props.getJwtIssuer();
- }
-
- @Bean
- public JWSAlgorithm jwsAlgorithm() {
+ public JWSAlgorithm jwsAlgorithm(final SecurityProperties props) {
return JWSAlgorithm.parse(props.getJwsAlgorithm().toUpperCase());
}
- @Bean
- public String jwsKey() {
+ private static String jwsKey(final JWSAlgorithm jwsAlgorithm, final SecurityProperties props) {
String jwsKey = props.getJwsKey();
if (jwsKey == null) {
throw new IllegalArgumentException("No JWS key provided");
}
- JWSAlgorithm jwsAlgorithm = jwsAlgorithm();
if (JWSAlgorithm.Family.HMAC_SHA.contains(jwsAlgorithm)) {
int minLength = jwsAlgorithm.equals(JWSAlgorithm.HS256)
? 256 / 8
@@ -107,24 +76,28 @@ public class SecurityContext {
@ConditionalOnMissingBean
@Bean
- public DefaultCredentialChecker credentialChecker() {
- return new DefaultCredentialChecker(jwsKey(), adminPassword(), anonymousKey());
+ public DefaultCredentialChecker credentialChecker(final SecurityProperties props,
+ final JWSAlgorithm jwsAlgorithm) {
+ return new DefaultCredentialChecker(jwsKey(jwsAlgorithm, props),
+ props.getAdminPassword(), props.getAnonymousKey());
}
@ConditionalOnMissingBean
@Bean
- public AccessTokenJWSVerifier accessTokenJWSVerifier()
+ public AccessTokenJWSVerifier accessTokenJWSVerifier(final JWSAlgorithm jwsAlgorithm,
+ final SecurityProperties props)
throws JOSEException, NoSuchAlgorithmException, InvalidKeySpecException {
- return new AccessTokenJWSVerifier(jwsAlgorithm(), jwsKey());
+ return new AccessTokenJWSVerifier(jwsAlgorithm, jwsKey(jwsAlgorithm, props));
}
@ConditionalOnMissingBean
@Bean
- public AccessTokenJWSSigner accessTokenJWSSigner()
+ public AccessTokenJWSSigner accessTokenJWSSigner(final JWSAlgorithm jwsAlgorithm,
+ final SecurityProperties props)
throws KeyLengthException, NoSuchAlgorithmException, InvalidKeySpecException {
- return new AccessTokenJWSSigner(jwsAlgorithm(), jwsKey());
+ return new AccessTokenJWSSigner(jwsAlgorithm, jwsKey(jwsAlgorithm, props));
}
@ConditionalOnMissingBean
diff --git a/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java b/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
index 4613532..82aa27a 100644
--- a/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
+++ b/core/spring/src/main/java/org/apache/syncope/core/spring/security/WebSecurityContext.java
@@ -33,10 +33,10 @@ import org.apache.syncope.core.provisioning.api.AuditManager;
import org.apache.syncope.core.provisioning.api.ConnectorManager;
import org.apache.syncope.core.provisioning.api.MappingManager;
import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -54,16 +54,10 @@ import org.springframework.security.web.firewall.HttpFirewall;
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
-public class WebSecurityContext extends WebSecurityConfigurerAdapter {
-
- @Autowired
- private SecurityProperties securityProperties;
-
- @Autowired
- private ApplicationContext ctx;
+@Configuration(proxyBeanMethods = false)
+public class WebSecurityContext {
public WebSecurityContext() {
- super(true);
SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL);
}
@@ -74,15 +68,61 @@ public class WebSecurityContext extends WebSecurityConfigurerAdapter {
return firewall;
}
- @Override
- public void configure(final WebSecurity web) {
- web.httpFirewall(allowUrlEncodedSlashHttpFirewall());
+ @Bean
+ public WebSecurityConfigurerAdapter webSecurityConfigurerAdapter(
+ final ApplicationContext ctx,
+ final SecurityProperties securityProperties,
+ final HttpFirewall allowUrlEncodedSlashHttpFirewall) {
+ return new WebSecurityConfigurerAdapter(true) {
+ @Override
+ public void configure(final WebSecurity web) {
+ web.httpFirewall(allowUrlEncodedSlashHttpFirewall);
+ }
+
+ @Override
+ protected void configure(final HttpSecurity http) throws Exception {
+ SyncopeBasicAuthenticationEntryPoint basicAuthenticationEntryPoint =
+ new SyncopeBasicAuthenticationEntryPoint();
+ basicAuthenticationEntryPoint.setRealmName("Apache Syncope authentication");
+
+ SyncopeAuthenticationDetailsSource authenticationDetailsSource =
+ new SyncopeAuthenticationDetailsSource();
+
+ JWTAuthenticationFilter jwtAuthenticationFilter = new JWTAuthenticationFilter(
+ authenticationManager(),
+ basicAuthenticationEntryPoint,
+ authenticationDetailsSource,
+ ctx.getBean(AuthDataAccessor.class),
+ ctx.getBean(DefaultCredentialChecker.class));
+
+ http.authorizeRequests().
+ antMatchers("/**").permitAll().and().
+ sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().
+ securityContext().securityContextRepository(new NullSecurityContextRepository()).and().
+ anonymous().principal(securityProperties.getAnonymousUser()).and().
+ httpBasic().authenticationEntryPoint(basicAuthenticationEntryPoint).
+ authenticationDetailsSource(authenticationDetailsSource).and().
+ exceptionHandling().accessDeniedHandler(accessDeniedHandler()).and().
+ addFilterBefore(jwtAuthenticationFilter, BasicAuthenticationFilter.class).
+ addFilterBefore(new MustChangePasswordFilter(), FilterSecurityInterceptor.class).
+ headers().disable().
+ csrf().disable();
+ }
+
+
+ @Override
+ protected void configure(final AuthenticationManagerBuilder builder) throws Exception {
+ builder.
+ authenticationProvider(ctx.getBean(UsernamePasswordAuthenticationProvider.class)).
+ authenticationProvider(ctx.getBean(JWTAuthenticationProvider.class));
+ }
+ };
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public UsernamePasswordAuthenticationProvider usernamePasswordAuthenticationProvider(
+ final SecurityProperties securityProperties,
final DomainOps domainOps,
final AuthDataAccessor dataAccessor,
final UserProvisioningManager provisioningManager,
@@ -98,55 +138,19 @@ public class WebSecurityContext extends WebSecurityConfigurerAdapter {
@ConditionalOnMissingBean
@Bean
- @Autowired
public JWTAuthenticationProvider jwtAuthenticationProvider(final AuthDataAccessor authDataAccessor) {
return new JWTAuthenticationProvider(authDataAccessor);
}
- @Override
- protected void configure(final AuthenticationManagerBuilder builder) throws Exception {
- builder.
- authenticationProvider(ctx.getBean(UsernamePasswordAuthenticationProvider.class)).
- authenticationProvider(ctx.getBean(JWTAuthenticationProvider.class));
- }
-
@Bean
public AccessDeniedHandler accessDeniedHandler() {
return new SyncopeAccessDeniedHandler();
}
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- SyncopeBasicAuthenticationEntryPoint basicAuthenticationEntryPoint = new SyncopeBasicAuthenticationEntryPoint();
- basicAuthenticationEntryPoint.setRealmName("Apache Syncope authentication");
-
- SyncopeAuthenticationDetailsSource authenticationDetailsSource = new SyncopeAuthenticationDetailsSource();
-
- JWTAuthenticationFilter jwtAuthenticationFilter = new JWTAuthenticationFilter(
- authenticationManager(),
- basicAuthenticationEntryPoint,
- authenticationDetailsSource,
- ctx.getBean(AuthDataAccessor.class),
- ctx.getBean(DefaultCredentialChecker.class));
-
- http.authorizeRequests().
- antMatchers("/**").permitAll().and().
- sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().
- securityContext().securityContextRepository(new NullSecurityContextRepository()).and().
- anonymous().principal(securityProperties.getAnonymousUser()).and().
- httpBasic().authenticationEntryPoint(basicAuthenticationEntryPoint).
- authenticationDetailsSource(authenticationDetailsSource).and().
- exceptionHandling().accessDeniedHandler(accessDeniedHandler()).and().
- addFilterBefore(jwtAuthenticationFilter, BasicAuthenticationFilter.class).
- addFilterBefore(new MustChangePasswordFilter(), FilterSecurityInterceptor.class).
- headers().disable().
- csrf().disable();
- }
-
@ConditionalOnMissingBean
@Bean
- @Autowired
public AuthDataAccessor authDataAccessor(
+ final SecurityProperties securityProperties,
final RealmDAO realmDAO,
final UserDAO userDAO,
final GroupDAO groupDAO,
diff --git a/core/spring/src/test/java/org/apache/syncope/core/spring/SpringTestConfiguration.java b/core/spring/src/test/java/org/apache/syncope/core/spring/SpringTestConfiguration.java
index 6947097..5514eb6 100644
--- a/core/spring/src/test/java/org/apache/syncope/core/spring/SpringTestConfiguration.java
+++ b/core/spring/src/test/java/org/apache/syncope/core/spring/SpringTestConfiguration.java
@@ -24,7 +24,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SpringTestConfiguration {
@Bean
diff --git a/core/starter/src/main/java/org/apache/syncope/core/starter/SwaggerUIInitializer.java b/core/starter/src/main/java/org/apache/syncope/core/starter/SwaggerUIInitializer.java
index 732c644..faa387b 100644
--- a/core/starter/src/main/java/org/apache/syncope/core/starter/SwaggerUIInitializer.java
+++ b/core/starter/src/main/java/org/apache/syncope/core/starter/SwaggerUIInitializer.java
@@ -22,7 +22,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SwaggerUIInitializer implements WebMvcConfigurer {
@Override
diff --git a/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java b/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java
index 9e73688..3b2ff45 100644
--- a/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java
+++ b/core/starter/src/main/java/org/apache/syncope/core/starter/SyncopeCoreApplication.java
@@ -19,14 +19,53 @@
package org.apache.syncope.core.starter;
import java.util.Map;
+
import org.apache.cxf.spring.boot.autoconfigure.openapi.OpenApiAutoConfiguration;
+import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
+import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStop;
+import org.apache.syncope.common.lib.info.SystemInfo;
+import org.apache.syncope.core.logic.LogicProperties;
import org.apache.syncope.core.persistence.api.DomainHolder;
+import org.apache.syncope.core.persistence.api.ImplementationLookup;
+import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
+import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
+import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
+import org.apache.syncope.core.persistence.api.dao.GroupDAO;
+import org.apache.syncope.core.persistence.api.dao.NotificationDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
+import org.apache.syncope.core.persistence.api.dao.RoleDAO;
+import org.apache.syncope.core.persistence.api.dao.SecurityQuestionDAO;
+import org.apache.syncope.core.persistence.api.dao.TaskDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.jpa.PersistenceProperties;
+import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
+import org.apache.syncope.core.provisioning.api.AuditManager;
+import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
+import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
+import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
+import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
+import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
+import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.provisioning.java.ProvisioningProperties;
+import org.apache.syncope.core.spring.security.PasswordGenerator;
+import org.apache.syncope.core.spring.security.SecurityProperties;
import org.apache.syncope.core.starter.actuate.DomainsHealthIndicator;
import org.apache.syncope.core.starter.actuate.ExternalResourcesHealthIndicator;
+import org.apache.syncope.core.starter.actuate.DefaultSyncopeCoreInfoContributor;
import org.apache.syncope.core.starter.actuate.SyncopeCoreInfoContributor;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
+import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
+import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.actuate.mail.MailHealthIndicator;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -39,9 +78,12 @@ import org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.PayloadApplicationEvent;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.event.EventListener;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication(exclude = {
@@ -51,7 +93,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class,
- QuartzAutoConfiguration.class })
+ QuartzAutoConfiguration.class }, proxyBeanMethods = false)
@EnableTransactionManagement
public class SyncopeCoreApplication extends SpringBootServletInitializer {
@@ -61,9 +103,6 @@ public class SyncopeCoreApplication extends SpringBootServletInitializer {
build().run(args);
}
- @Autowired
- protected JavaMailSender mailSender;
-
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
return builder.properties(Map.of("spring.config.name", "core")).sources(SyncopeCoreApplication.class);
@@ -71,8 +110,86 @@ public class SyncopeCoreApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean
@Bean
- public SyncopeCoreInfoContributor syncopeCoreInfoContributor() {
- return new SyncopeCoreInfoContributor();
+ public SyncopeCoreInfoContributor syncopeCoreInfoContributor(
+ final SecurityProperties securityProperties,
+ final PersistenceProperties persistenceProperties,
+ final ProvisioningProperties provisioningProperties,
+ final LogicProperties logicProperties,
+ final AnyTypeDAO anyTypeDAO,
+ final AnyTypeClassDAO anyTypeClassDAO,
+ final UserDAO userDAO,
+ final GroupDAO groupDAO,
+ final AnyObjectDAO anyObjectDAO,
+ final ExternalResourceDAO resourceDAO,
+ final ConfParamOps confParamOps,
+ final ServiceOps serviceOps,
+ final ConnIdBundleManager bundleManager,
+ final PropagationTaskExecutor propagationTaskExecutor,
+ final AnyObjectWorkflowAdapter awfAdapter,
+ final UserWorkflowAdapter uwfAdapter,
+ final GroupWorkflowAdapter gwfAdapter,
+ final AnyObjectProvisioningManager aProvisioningManager,
+ final UserProvisioningManager uProvisioningManager,
+ final GroupProvisioningManager gProvisioningManager,
+ final VirAttrCache virAttrCache,
+ final NotificationManager notificationManager,
+ final AuditManager auditManager,
+ final PasswordGenerator passwordGenerator,
+ final EntityFactory entityFactory,
+ final PlainSchemaDAO plainSchemaDAO,
+ final PlainAttrDAO plainAttrDAO,
+ final PlainAttrValueDAO plainAttrValueDAO,
+ final AnySearchDAO anySearchDAO,
+ final ImplementationLookup implLookup,
+ final PolicyDAO policyDAO,
+ final NotificationDAO notificationDAO,
+ final TaskDAO taskDAO,
+ final VirSchemaDAO virSchemaDAO,
+ final RoleDAO roleDAO,
+ final SecurityQuestionDAO securityQuestionDAO,
+ @Qualifier("asyncConnectorFacadeExecutor")
+ final ThreadPoolTaskExecutor asyncConnectorFacadeExecutor,
+ @Qualifier("propagationTaskExecutorAsyncExecutor")
+ final ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor) {
+
+ return new DefaultSyncopeCoreInfoContributor(securityProperties,
+ persistenceProperties,
+ provisioningProperties,
+ logicProperties,
+ anyTypeDAO,
+ anyTypeClassDAO,
+ userDAO,
+ groupDAO,
+ anyObjectDAO,
+ resourceDAO,
+ confParamOps,
+ serviceOps,
+ bundleManager,
+ propagationTaskExecutor,
+ awfAdapter,
+ uwfAdapter,
+ gwfAdapter,
+ aProvisioningManager,
+ uProvisioningManager,
+ gProvisioningManager,
+ virAttrCache,
+ notificationManager,
+ auditManager,
+ passwordGenerator,
+ entityFactory,
+ plainSchemaDAO,
+ plainAttrDAO,
+ plainAttrValueDAO,
+ anySearchDAO,
+ implLookup,
+ policyDAO,
+ notificationDAO,
+ taskDAO,
+ virSchemaDAO,
+ roleDAO,
+ securityQuestionDAO,
+ asyncConnectorFacadeExecutor,
+ propagationTaskExecutorAsyncExecutor);
}
@ConditionalOnMissingBean
@@ -83,7 +200,7 @@ public class SyncopeCoreApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean
@Bean
- public MailHealthIndicator mailHealthIndicator() {
+ public MailHealthIndicator mailHealthIndicator(final JavaMailSender mailSender) {
return new MailHealthIndicator((JavaMailSenderImpl) mailSender);
}
@@ -96,7 +213,6 @@ public class SyncopeCoreApplication extends SpringBootServletInitializer {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SyncopeCoreStart keymasterStart(final DomainHolder domainHolder) {
return new SyncopeCoreStart(domainHolder);
}
@@ -105,4 +221,31 @@ public class SyncopeCoreApplication extends SpringBootServletInitializer {
public KeymasterStop keymasterStop() {
return new KeymasterStop(NetworkService.Type.CORE);
}
+
+
+ @Bean
+ public SyncopeStarterEventListener syncopeCoreEventListener(
+ @Qualifier("syncopeCoreInfoContributor")
+ final SyncopeCoreInfoContributor syncopeCoreInfoContributor) {
+ return new DefaultSyncopeStarterEventListener(syncopeCoreInfoContributor);
+ }
+
+ @FunctionalInterface
+ public interface SyncopeStarterEventListener {
+ void addLoadInstant(PayloadApplicationEvent<SystemInfo.LoadInstant> event);
+ }
+
+ public static class DefaultSyncopeStarterEventListener implements SyncopeStarterEventListener {
+ private final SyncopeCoreInfoContributor contributor;
+
+ public DefaultSyncopeStarterEventListener(final SyncopeCoreInfoContributor contributor) {
+ this.contributor = contributor;
+ }
+
+ @EventListener
+ @Override
+ public void addLoadInstant(final PayloadApplicationEvent<SystemInfo.LoadInstant> event) {
+ contributor.addLoadInstant(event);
+ }
+ }
}
diff --git a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DefaultSyncopeCoreInfoContributor.java
similarity index 75%
copy from core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java
copy to core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DefaultSyncopeCoreInfoContributor.java
index 2648744..23df5fa 100644
--- a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java
+++ b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/DefaultSyncopeCoreInfoContributor.java
@@ -18,19 +18,6 @@
*/
package org.apache.syncope.core.starter.actuate;
-import java.lang.management.ManagementFactory;
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.RuntimeMXBean;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.UnknownHostException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
import org.apache.syncope.common.keymaster.client.api.ServiceOps;
import org.apache.syncope.common.lib.info.JavaImplInfo;
@@ -82,18 +69,29 @@ import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.aop.support.AopUtils;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.context.PayloadApplicationEvent;
-import org.springframework.context.event.EventListener;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
-public class SyncopeCoreInfoContributor implements InfoContributor {
+import java.lang.management.ManagementFactory;
+import java.lang.management.OperatingSystemMXBean;
+import java.lang.management.RuntimeMXBean;
+import java.net.InetAddress;
+import java.net.URI;
+import java.net.UnknownHostException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+public class DefaultSyncopeCoreInfoContributor implements SyncopeCoreInfoContributor, InfoContributor {
- protected static final Logger LOG = LoggerFactory.getLogger(SyncopeCoreInfoContributor.class);
+ protected static final Logger LOG = LoggerFactory.getLogger(DefaultSyncopeCoreInfoContributor.class);
protected static final Object MONITOR = new Object();
@@ -157,127 +155,161 @@ public class SyncopeCoreInfoContributor implements InfoContributor {
}
}
- @EventListener
- public void addLoadInstant(final PayloadApplicationEvent<SystemInfo.LoadInstant> event) {
- synchronized (MONITOR) {
- initSystemInfo();
- SYSTEM_INFO.getLoad().add(event.getPayload());
- }
- }
+ private final SecurityProperties securityProperties;
- @Autowired
- protected SecurityProperties securityProperties;
+ private final PersistenceProperties persistenceProperties;
- @Autowired
- protected PersistenceProperties persistenceProperties;
+ private final ProvisioningProperties provisioningProperties;
- @Autowired
- protected ProvisioningProperties provisioningProperties;
+ private final LogicProperties logicProperties;
- @Autowired
- protected LogicProperties logicProperties;
+ private final AnyTypeDAO anyTypeDAO;
- @Autowired
- protected AnyTypeDAO anyTypeDAO;
+ private final AnyTypeClassDAO anyTypeClassDAO;
- @Autowired
- protected AnyTypeClassDAO anyTypeClassDAO;
+ private final UserDAO userDAO;
- @Autowired
- protected UserDAO userDAO;
+ private final GroupDAO groupDAO;
- @Autowired
- protected GroupDAO groupDAO;
+ private final AnyObjectDAO anyObjectDAO;
- @Autowired
- protected AnyObjectDAO anyObjectDAO;
+ private final ExternalResourceDAO resourceDAO;
- @Autowired
- protected ExternalResourceDAO resourceDAO;
+ private final ConfParamOps confParamOps;
- @Autowired
- protected ConfParamOps confParamOps;
+ private final ServiceOps serviceOps;
- @Autowired
- protected ServiceOps serviceOps;
+ private final ConnIdBundleManager bundleManager;
- @Autowired
- protected ConnIdBundleManager bundleManager;
+ private final PropagationTaskExecutor propagationTaskExecutor;
- @Autowired
- protected PropagationTaskExecutor propagationTaskExecutor;
+ private final AnyObjectWorkflowAdapter awfAdapter;
- @Autowired
- protected AnyObjectWorkflowAdapter awfAdapter;
+ private final UserWorkflowAdapter uwfAdapter;
- @Autowired
- protected UserWorkflowAdapter uwfAdapter;
+ private final GroupWorkflowAdapter gwfAdapter;
- @Autowired
- protected GroupWorkflowAdapter gwfAdapter;
+ private final AnyObjectProvisioningManager aProvisioningManager;
- @Autowired
- protected AnyObjectProvisioningManager aProvisioningManager;
+ private final UserProvisioningManager uProvisioningManager;
- @Autowired
- protected UserProvisioningManager uProvisioningManager;
+ private final GroupProvisioningManager gProvisioningManager;
- @Autowired
- protected GroupProvisioningManager gProvisioningManager;
+ private final VirAttrCache virAttrCache;
- @Autowired
- protected VirAttrCache virAttrCache;
+ private final NotificationManager notificationManager;
- @Autowired
- protected NotificationManager notificationManager;
+ private final AuditManager auditManager;
- @Autowired
- protected AuditManager auditManager;
+ private final PasswordGenerator passwordGenerator;
- @Autowired
- protected PasswordGenerator passwordGenerator;
+ private final EntityFactory entityFactory;
- @Autowired
- protected EntityFactory entityFactory;
+ private final PlainSchemaDAO plainSchemaDAO;
- @Autowired
- protected PlainSchemaDAO plainSchemaDAO;
+ private final PlainAttrDAO plainAttrDAO;
- @Autowired
- protected PlainAttrDAO plainAttrDAO;
+ private final PlainAttrValueDAO plainAttrValueDAO;
- @Autowired
- protected PlainAttrValueDAO plainAttrValueDAO;
+ private final AnySearchDAO anySearchDAO;
- @Autowired
- protected AnySearchDAO anySearchDAO;
+ private final ImplementationLookup implLookup;
- @Autowired
- protected ImplementationLookup implLookup;
+ private final PolicyDAO policyDAO;
- @Autowired
- protected PolicyDAO policyDAO;
+ private final NotificationDAO notificationDAO;
- @Autowired
- protected NotificationDAO notificationDAO;
+ private final TaskDAO taskDAO;
- @Autowired
- protected TaskDAO taskDAO;
+ private final VirSchemaDAO virSchemaDAO;
- @Autowired
- protected VirSchemaDAO virSchemaDAO;
+ private final RoleDAO roleDAO;
- @Autowired
- protected RoleDAO roleDAO;
+ private final SecurityQuestionDAO securityQuestionDAO;
- @Autowired
- protected SecurityQuestionDAO securityQuestionDAO;
+ private final ThreadPoolTaskExecutor asyncConnectorFacadeExecutor;
- @Resource(name = "asyncConnectorFacadeExecutor")
- protected ThreadPoolTaskExecutor asyncConnectorFacadeExecutor;
+ private final ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor;
- @Resource(name = "propagationTaskExecutorAsyncExecutor")
- protected ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor;
+ public DefaultSyncopeCoreInfoContributor(
+ final SecurityProperties securityProperties,
+ final PersistenceProperties persistenceProperties,
+ final ProvisioningProperties provisioningProperties,
+ final LogicProperties logicProperties,
+ final AnyTypeDAO anyTypeDAO,
+ final AnyTypeClassDAO anyTypeClassDAO,
+ final UserDAO userDAO,
+ final GroupDAO groupDAO,
+ final AnyObjectDAO anyObjectDAO,
+ final ExternalResourceDAO resourceDAO,
+ final ConfParamOps confParamOps,
+ final ServiceOps serviceOps,
+ final ConnIdBundleManager bundleManager,
+ final PropagationTaskExecutor propagationTaskExecutor,
+ final AnyObjectWorkflowAdapter awfAdapter,
+ final UserWorkflowAdapter uwfAdapter,
+ final GroupWorkflowAdapter gwfAdapter,
+ final AnyObjectProvisioningManager aProvisioningManager,
+ final UserProvisioningManager uProvisioningManager,
+ final GroupProvisioningManager gProvisioningManager,
+ final VirAttrCache virAttrCache,
+ final NotificationManager notificationManager,
+ final AuditManager auditManager,
+ final PasswordGenerator passwordGenerator,
+ final EntityFactory entityFactory,
+ final PlainSchemaDAO plainSchemaDAO,
+ final PlainAttrDAO plainAttrDAO,
+ final PlainAttrValueDAO plainAttrValueDAO,
+ final AnySearchDAO anySearchDAO,
+ final ImplementationLookup implLookup,
+ final PolicyDAO policyDAO,
+ final NotificationDAO notificationDAO,
+ final TaskDAO taskDAO,
+ final VirSchemaDAO virSchemaDAO,
+ final RoleDAO roleDAO,
+ final SecurityQuestionDAO securityQuestionDAO,
+ final ThreadPoolTaskExecutor asyncConnectorFacadeExecutor,
+ final ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor) {
+
+ this.securityProperties = securityProperties;
+ this.persistenceProperties = persistenceProperties;
+ this.provisioningProperties = provisioningProperties;
+ this.logicProperties = logicProperties;
+ this.anyTypeDAO = anyTypeDAO;
+ this.anyTypeClassDAO = anyTypeClassDAO;
+ this.userDAO = userDAO;
+ this.groupDAO = groupDAO;
+ this.anyObjectDAO = anyObjectDAO;
+ this.resourceDAO = resourceDAO;
+ this.confParamOps = confParamOps;
+ this.serviceOps = serviceOps;
+ this.bundleManager = bundleManager;
+ this.propagationTaskExecutor = propagationTaskExecutor;
+ this.awfAdapter = awfAdapter;
+ this.uwfAdapter = uwfAdapter;
+ this.gwfAdapter = gwfAdapter;
+ this.aProvisioningManager = aProvisioningManager;
+ this.uProvisioningManager = uProvisioningManager;
+ this.gProvisioningManager = gProvisioningManager;
+ this.virAttrCache = virAttrCache;
+ this.notificationManager = notificationManager;
+ this.auditManager = auditManager;
+ this.passwordGenerator = passwordGenerator;
+ this.entityFactory = entityFactory;
+ this.plainSchemaDAO = plainSchemaDAO;
+ this.plainAttrDAO = plainAttrDAO;
+ this.plainAttrValueDAO = plainAttrValueDAO;
+ this.anySearchDAO = anySearchDAO;
+ this.implLookup = implLookup;
+ this.policyDAO = policyDAO;
+ this.notificationDAO = notificationDAO;
+ this.taskDAO = taskDAO;
+ this.virSchemaDAO = virSchemaDAO;
+ this.roleDAO = roleDAO;
+ this.securityQuestionDAO = securityQuestionDAO;
+ this.asyncConnectorFacadeExecutor = asyncConnectorFacadeExecutor;
+ this.propagationTaskExecutorAsyncExecutor = propagationTaskExecutorAsyncExecutor;
+ }
protected boolean isSelfRegAllowed() {
return confParamOps.get(AuthContextUtils.getDomain(), "selfRegistration.allowed", false, Boolean.class);
@@ -468,4 +500,12 @@ public class SyncopeCoreInfoContributor implements InfoContributor {
builder.withDetail("provisioningProperties", provisioningProperties);
builder.withDetail("logicProperties", logicProperties);
}
+
+ @Override
+ public void addLoadInstant(final PayloadApplicationEvent<SystemInfo.LoadInstant> event) {
+ synchronized (MONITOR) {
+ initSystemInfo();
+ SYSTEM_INFO.getLoad().add(event.getPayload());
+ }
+ }
}
diff --git a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java
index 2648744..ad97624 100644
--- a/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java
+++ b/core/starter/src/main/java/org/apache/syncope/core/starter/actuate/SyncopeCoreInfoContributor.java
@@ -16,456 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.syncope.core.starter.actuate;
-import java.lang.management.ManagementFactory;
-import java.lang.management.OperatingSystemMXBean;
-import java.lang.management.RuntimeMXBean;
-import java.net.InetAddress;
-import java.net.URI;
-import java.net.UnknownHostException;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import javax.annotation.Resource;
-import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
-import org.apache.syncope.common.keymaster.client.api.ServiceOps;
-import org.apache.syncope.common.lib.info.JavaImplInfo;
-import org.apache.syncope.common.lib.info.NumbersInfo;
-import org.apache.syncope.common.lib.info.PlatformInfo;
import org.apache.syncope.common.lib.info.SystemInfo;
-import org.apache.syncope.common.lib.types.EntitlementsHolder;
-import org.apache.syncope.common.lib.types.ImplementationTypesHolder;
-import org.apache.syncope.common.lib.types.TaskType;
-import org.apache.syncope.core.logic.LogicProperties;
-import org.apache.syncope.core.persistence.api.ImplementationLookup;
-import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
-import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
-import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
-import org.apache.syncope.core.persistence.api.dao.ExternalResourceDAO;
-import org.apache.syncope.core.persistence.api.dao.GroupDAO;
-import org.apache.syncope.core.persistence.api.dao.NotificationDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainAttrValueDAO;
-import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
-import org.apache.syncope.core.persistence.api.dao.PolicyDAO;
-import org.apache.syncope.core.persistence.api.dao.RoleDAO;
-import org.apache.syncope.core.persistence.api.dao.SecurityQuestionDAO;
-import org.apache.syncope.core.persistence.api.dao.TaskDAO;
-import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.apache.syncope.core.persistence.api.dao.VirSchemaDAO;
-import org.apache.syncope.core.persistence.api.entity.AnyType;
-import org.apache.syncope.core.persistence.api.entity.Entity;
-import org.apache.syncope.core.persistence.api.entity.EntityFactory;
-import org.apache.syncope.core.persistence.api.entity.policy.AccountPolicy;
-import org.apache.syncope.core.persistence.api.entity.policy.PasswordPolicy;
-import org.apache.syncope.core.persistence.jpa.PersistenceProperties;
-import org.apache.syncope.core.provisioning.api.AnyObjectProvisioningManager;
-import org.apache.syncope.core.provisioning.api.AuditManager;
-import org.apache.syncope.core.provisioning.api.ConnIdBundleManager;
-import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
-import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
-import org.apache.syncope.core.provisioning.api.cache.VirAttrCache;
-import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
-import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.apache.syncope.core.provisioning.java.ProvisioningProperties;
-import org.apache.syncope.core.spring.security.AuthContextUtils;
-import org.apache.syncope.core.spring.security.PasswordGenerator;
-import org.apache.syncope.core.spring.security.SecurityProperties;
-import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
-import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
-import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.aop.support.AopUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.info.Info;
-import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.context.PayloadApplicationEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
-
-public class SyncopeCoreInfoContributor implements InfoContributor {
-
- protected static final Logger LOG = LoggerFactory.getLogger(SyncopeCoreInfoContributor.class);
-
- protected static final Object MONITOR = new Object();
-
- protected static PlatformInfo PLATFORM_INFO;
-
- protected static SystemInfo SYSTEM_INFO;
-
- protected static final Pattern THREADPOOLTASKEXECUTOR_PATTERN = Pattern.compile(
- ".*, pool size = ([0-9]+), "
- + "active threads = ([0-9]+), "
- + "queued tasks = ([0-9]+), "
- + "completed tasks = ([0-9]+).*");
-
- protected static void setTaskExecutorInfo(final String toString, final NumbersInfo.TaskExecutorInfo info) {
- Matcher matcher = THREADPOOLTASKEXECUTOR_PATTERN.matcher(toString);
- if (matcher.matches() && matcher.groupCount() == 4) {
- try {
- info.setSize(Integer.valueOf(matcher.group(1)));
- } catch (NumberFormatException e) {
- LOG.error("While parsing thread pool size", e);
- }
- try {
- info.setActive(Integer.valueOf(matcher.group(2)));
- } catch (NumberFormatException e) {
- LOG.error("While parsing active threads #", e);
- }
- try {
- info.setQueued(Integer.valueOf(matcher.group(3)));
- } catch (NumberFormatException e) {
- LOG.error("While parsing queued threads #", e);
- }
- try {
- info.setCompleted(Integer.valueOf(matcher.group(4)));
- } catch (NumberFormatException e) {
- LOG.error("While parsing completed threads #", e);
- }
- }
- }
-
- protected static void initSystemInfo() {
- if (SYSTEM_INFO == null) {
- OperatingSystemMXBean operatingSystemMXBean = ManagementFactory.getOperatingSystemMXBean();
- RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
-
- SYSTEM_INFO = new SystemInfo();
- try {
- SYSTEM_INFO.setHostname(InetAddress.getLocalHost().getHostName());
- } catch (UnknownHostException e) {
- LOG.error("Could not get host name", e);
- }
-
- SYSTEM_INFO.setOs(operatingSystemMXBean.getName()
- + ' ' + operatingSystemMXBean.getVersion()
- + ' ' + operatingSystemMXBean.getArch());
- SYSTEM_INFO.setAvailableProcessors(operatingSystemMXBean.getAvailableProcessors());
- SYSTEM_INFO.setJvm(
- runtimeMXBean.getVmName()
- + ' ' + System.getProperty("java.version")
- + ' ' + runtimeMXBean.getVmVendor());
- SYSTEM_INFO.setStartTime(runtimeMXBean.getStartTime());
- }
- }
-
- @EventListener
- public void addLoadInstant(final PayloadApplicationEvent<SystemInfo.LoadInstant> event) {
- synchronized (MONITOR) {
- initSystemInfo();
- SYSTEM_INFO.getLoad().add(event.getPayload());
- }
- }
-
- @Autowired
- protected SecurityProperties securityProperties;
-
- @Autowired
- protected PersistenceProperties persistenceProperties;
-
- @Autowired
- protected ProvisioningProperties provisioningProperties;
-
- @Autowired
- protected LogicProperties logicProperties;
-
- @Autowired
- protected AnyTypeDAO anyTypeDAO;
-
- @Autowired
- protected AnyTypeClassDAO anyTypeClassDAO;
-
- @Autowired
- protected UserDAO userDAO;
-
- @Autowired
- protected GroupDAO groupDAO;
-
- @Autowired
- protected AnyObjectDAO anyObjectDAO;
-
- @Autowired
- protected ExternalResourceDAO resourceDAO;
-
- @Autowired
- protected ConfParamOps confParamOps;
-
- @Autowired
- protected ServiceOps serviceOps;
-
- @Autowired
- protected ConnIdBundleManager bundleManager;
-
- @Autowired
- protected PropagationTaskExecutor propagationTaskExecutor;
-
- @Autowired
- protected AnyObjectWorkflowAdapter awfAdapter;
-
- @Autowired
- protected UserWorkflowAdapter uwfAdapter;
-
- @Autowired
- protected GroupWorkflowAdapter gwfAdapter;
-
- @Autowired
- protected AnyObjectProvisioningManager aProvisioningManager;
-
- @Autowired
- protected UserProvisioningManager uProvisioningManager;
-
- @Autowired
- protected GroupProvisioningManager gProvisioningManager;
-
- @Autowired
- protected VirAttrCache virAttrCache;
-
- @Autowired
- protected NotificationManager notificationManager;
-
- @Autowired
- protected AuditManager auditManager;
-
- @Autowired
- protected PasswordGenerator passwordGenerator;
-
- @Autowired
- protected EntityFactory entityFactory;
-
- @Autowired
- protected PlainSchemaDAO plainSchemaDAO;
-
- @Autowired
- protected PlainAttrDAO plainAttrDAO;
-
- @Autowired
- protected PlainAttrValueDAO plainAttrValueDAO;
-
- @Autowired
- protected AnySearchDAO anySearchDAO;
-
- @Autowired
- protected ImplementationLookup implLookup;
-
- @Autowired
- protected PolicyDAO policyDAO;
-
- @Autowired
- protected NotificationDAO notificationDAO;
-
- @Autowired
- protected TaskDAO taskDAO;
-
- @Autowired
- protected VirSchemaDAO virSchemaDAO;
-
- @Autowired
- protected RoleDAO roleDAO;
-
- @Autowired
- protected SecurityQuestionDAO securityQuestionDAO;
-
- @Resource(name = "asyncConnectorFacadeExecutor")
- protected ThreadPoolTaskExecutor asyncConnectorFacadeExecutor;
-
- @Resource(name = "propagationTaskExecutorAsyncExecutor")
- protected ThreadPoolTaskExecutor propagationTaskExecutorAsyncExecutor;
-
- protected boolean isSelfRegAllowed() {
- return confParamOps.get(AuthContextUtils.getDomain(), "selfRegistration.allowed", false, Boolean.class);
- }
-
- protected boolean isPwdResetAllowed() {
- return confParamOps.get(AuthContextUtils.getDomain(), "passwordReset.allowed", false, Boolean.class);
- }
-
- protected boolean isPwdResetRequiringSecurityQuestions() {
- return confParamOps.get(AuthContextUtils.getDomain(), "passwordReset.securityQuestion", true, Boolean.class);
- }
-
- protected void buildPlatform() {
- synchronized (this) {
- if (PLATFORM_INFO == null) {
- PLATFORM_INFO = new PlatformInfo();
- PLATFORM_INFO.setKeymasterConfParamOps(AopUtils.getTargetClass(confParamOps).getName());
- PLATFORM_INFO.setKeymasterServiceOps(AopUtils.getTargetClass(serviceOps).getName());
-
- PLATFORM_INFO.getConnIdLocations().addAll(bundleManager.getLocations().stream().
- map(URI::toASCIIString).collect(Collectors.toList()));
-
- PLATFORM_INFO.getWorkflowInfo().
- setAnyObjectWorkflowAdapter(AopUtils.getTargetClass(awfAdapter).getName());
- PLATFORM_INFO.getWorkflowInfo().
- setUserWorkflowAdapter(AopUtils.getTargetClass(uwfAdapter).getName());
- PLATFORM_INFO.getWorkflowInfo().
- setGroupWorkflowAdapter(AopUtils.getTargetClass(gwfAdapter).getName());
-
- PLATFORM_INFO.getProvisioningInfo().
- setAnyObjectProvisioningManager(AopUtils.getTargetClass(aProvisioningManager).getName());
- PLATFORM_INFO.getProvisioningInfo().
- setUserProvisioningManager(AopUtils.getTargetClass(uProvisioningManager).getName());
- PLATFORM_INFO.getProvisioningInfo().
- setGroupProvisioningManager(AopUtils.getTargetClass(gProvisioningManager).getName());
- PLATFORM_INFO.getProvisioningInfo().
- setPropagationTaskExecutor(AopUtils.getTargetClass(propagationTaskExecutor).getName());
- PLATFORM_INFO.getProvisioningInfo().
- setVirAttrCache(AopUtils.getTargetClass(virAttrCache).getName());
- PLATFORM_INFO.getProvisioningInfo().
- setNotificationManager(AopUtils.getTargetClass(notificationManager).getName());
- PLATFORM_INFO.getProvisioningInfo().
- setAuditManager(AopUtils.getTargetClass(auditManager).getName());
-
- PLATFORM_INFO.setPasswordGenerator(AopUtils.getTargetClass(passwordGenerator).getName());
-
- PLATFORM_INFO.getPersistenceInfo().
- setEntityFactory(AopUtils.getTargetClass(entityFactory).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setPlainSchemaDAO(AopUtils.getTargetClass(plainSchemaDAO).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setPlainAttrDAO(AopUtils.getTargetClass(plainAttrDAO).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setPlainAttrValueDAO(AopUtils.getTargetClass(plainAttrValueDAO).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setAnySearchDAO(AopUtils.getTargetClass(anySearchDAO).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setUserDAO(AopUtils.getTargetClass(userDAO).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setGroupDAO(AopUtils.getTargetClass(groupDAO).getName());
- PLATFORM_INFO.getPersistenceInfo().
- setAnyObjectDAO(AopUtils.getTargetClass(anyObjectDAO).getName());
-
- ImplementationTypesHolder.getInstance().getValues().forEach((typeName, typeInterface) -> {
- Set<String> classNames = implLookup.getClassNames(typeName);
- if (classNames != null) {
- JavaImplInfo javaImplInfo = new JavaImplInfo();
- javaImplInfo.setType(typeName);
- javaImplInfo.getClasses().addAll(classNames);
-
- PLATFORM_INFO.getJavaImplInfos().add(javaImplInfo);
- }
- });
- }
-
- PLATFORM_INFO.setSelfRegAllowed(isSelfRegAllowed());
- PLATFORM_INFO.setPwdResetAllowed(isPwdResetAllowed());
- PLATFORM_INFO.setPwdResetRequiringSecurityQuestions(isPwdResetRequiringSecurityQuestions());
-
- PLATFORM_INFO.getEntitlements().clear();
- PLATFORM_INFO.getEntitlements().addAll(EntitlementsHolder.getInstance().getValues());
-
- PLATFORM_INFO.getImplementationTypes().clear();
- PLATFORM_INFO.getImplementationTypes().addAll(ImplementationTypesHolder.getInstance().getValues().keySet());
-
- AuthContextUtils.callAsAdmin(AuthContextUtils.getDomain(), () -> {
- PLATFORM_INFO.getAnyTypes().clear();
- PLATFORM_INFO.getAnyTypes().addAll(anyTypeDAO.findAll().stream().
- map(Entity::getKey).collect(Collectors.toList()));
-
- PLATFORM_INFO.getUserClasses().clear();
- PLATFORM_INFO.getUserClasses().addAll(anyTypeDAO.findUser().getClasses().stream().
- map(Entity::getKey).collect(Collectors.toList()));
-
- PLATFORM_INFO.getAnyTypeClasses().clear();
- PLATFORM_INFO.getAnyTypeClasses().addAll(anyTypeClassDAO.findAll().stream().
- map(Entity::getKey).collect(Collectors.toList()));
-
- PLATFORM_INFO.getResources().clear();
- PLATFORM_INFO.getResources().addAll(resourceDAO.findAll().stream().
- map(Entity::getKey).collect(Collectors.toList()));
- return null;
- });
- }
- }
-
- protected NumbersInfo buildNumbers() {
- NumbersInfo numbersInfo = new NumbersInfo();
-
- numbersInfo.setTotalUsers(userDAO.count());
- numbersInfo.getUsersByRealm().putAll(userDAO.countByRealm());
- numbersInfo.getUsersByStatus().putAll(userDAO.countByStatus());
-
- numbersInfo.setTotalGroups(groupDAO.count());
- numbersInfo.getGroupsByRealm().putAll(groupDAO.countByRealm());
-
- Map<AnyType, Integer> anyObjectNumbers = anyObjectDAO.countByType();
- int i = 0;
- for (Iterator<Map.Entry<AnyType, Integer>> itor = anyObjectNumbers.entrySet().iterator();
- i < 2 && itor.hasNext(); i++) {
-
- Map.Entry<AnyType, Integer> entry = itor.next();
- if (i == 0) {
- numbersInfo.setAnyType1(entry.getKey().getKey());
- numbersInfo.setTotalAny1(entry.getValue());
- numbersInfo.getAny1ByRealm().putAll(anyObjectDAO.countByRealm(entry.getKey()));
- } else {
- numbersInfo.setAnyType2(entry.getKey().getKey());
- numbersInfo.setTotalAny2(entry.getValue());
- numbersInfo.getAny2ByRealm().putAll(anyObjectDAO.countByRealm(entry.getKey()));
- }
- }
-
- numbersInfo.setTotalResources(resourceDAO.count());
-
- numbersInfo.setTotalRoles(roleDAO.count());
-
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.RESOURCE.name(), numbersInfo.getTotalResources() > 0);
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ACCOUNT_POLICY.name(), !policyDAO.find(AccountPolicy.class).isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.PASSWORD_POLICY.name(), !policyDAO.find(PasswordPolicy.class).isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.NOTIFICATION.name(), !notificationDAO.findAll().isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.PULL_TASK.name(), !taskDAO.findAll(TaskType.PULL).isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.VIR_SCHEMA.name(), !virSchemaDAO.findAll().isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ANY_TYPE.name(), !anyObjectNumbers.isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.SECURITY_QUESTION.name(), !securityQuestionDAO.findAll().isEmpty());
- numbersInfo.getConfCompleteness().put(
- NumbersInfo.ConfItem.ROLE.name(), numbersInfo.getTotalRoles() > 0);
-
- setTaskExecutorInfo(
- asyncConnectorFacadeExecutor.getThreadPoolExecutor().toString(),
- numbersInfo.getAsyncConnectorExecutor());
- setTaskExecutorInfo(
- propagationTaskExecutorAsyncExecutor.getThreadPoolExecutor().toString(),
- numbersInfo.getPropagationTaskExecutor());
-
- return numbersInfo;
- }
-
- protected void buildSystem() {
- synchronized (MONITOR) {
- initSystemInfo();
- }
- }
-
- @PreAuthorize("isAuthenticated()")
- @Transactional(readOnly = true)
- @Override
- public void contribute(final Info.Builder builder) {
- buildPlatform();
- builder.withDetail("platform", PLATFORM_INFO);
-
- builder.withDetail("numbers", buildNumbers());
-
- buildSystem();
- builder.withDetail("system", SYSTEM_INFO);
- builder.withDetail("securityProperties", securityProperties);
- builder.withDetail("persistenceProperties", persistenceProperties);
- builder.withDetail("provisioningProperties", provisioningProperties);
- builder.withDetail("logicProperties", logicProperties);
- }
+@FunctionalInterface
+public interface SyncopeCoreInfoContributor {
+ void addLoadInstant(PayloadApplicationEvent<SystemInfo.LoadInstant> event);
}
diff --git a/core/starter/src/main/resources/core.properties b/core/starter/src/main/resources/core.properties
index 73c6364..adac19e 100644
--- a/core/starter/src/main/resources/core.properties
+++ b/core/starter/src/main/resources/core.properties
@@ -111,3 +111,9 @@ security.digester.useLenientSaltSizeCheck=true
#########
logic.enableJDBCAuditAppender=true
+
+#########
+# Disable CGLib Proxies #
+#########
+spring.aop.auto=true
+spring.aop.proxy-target-class=false
diff --git a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/WorkflowContext.java b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/WorkflowContext.java
index 8ebc4ca..f51a0f2 100644
--- a/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/WorkflowContext.java
+++ b/core/workflow-java/src/main/java/org/apache/syncope/core/workflow/java/WorkflowContext.java
@@ -29,17 +29,15 @@ import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.apache.syncope.core.workflow.api.AnyObjectWorkflowAdapter;
import org.apache.syncope.core.workflow.api.GroupWorkflowAdapter;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class WorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserWorkflowAdapter uwfAdapter(
final UserDataBinder userDataBinder,
final UserDAO userDAO,
@@ -51,7 +49,6 @@ public class WorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public GroupWorkflowAdapter gwfAdapter(
final GroupDataBinder groupDataBinder,
final GroupDAO groupDAO,
@@ -62,7 +59,6 @@ public class WorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AnyObjectWorkflowAdapter awfAdapter(
final AnyObjectDataBinder anyObjectDataBinder,
final AnyObjectDAO anyObjectDAO,
diff --git a/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelLogicContext.java b/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelLogicContext.java
index 2ac7bf5..8c46d0b 100644
--- a/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelLogicContext.java
+++ b/ext/camel/logic/src/main/java/org/apache/syncope/core/logic/CamelLogicContext.java
@@ -22,33 +22,26 @@ import org.apache.syncope.core.logic.init.CamelRouteLoader;
import org.apache.syncope.core.persistence.api.dao.CamelRouteDAO;
import org.apache.syncope.core.provisioning.api.data.CamelRouteDataBinder;
import org.apache.syncope.core.provisioning.camel.SyncopeCamelContext;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class CamelLogicContext {
- @javax.annotation.Resource(name = "userRoutes")
- private Resource userRoutes;
-
- @javax.annotation.Resource(name = "groupRoutes")
- private Resource groupRoutes;
-
- @javax.annotation.Resource(name = "anyObjectRoutes")
- private Resource anyObjectRoutes;
-
@ConditionalOnMissingBean
@Bean
- public CamelRouteLoader camelRouteLoader() {
+ public CamelRouteLoader camelRouteLoader(
+ @Qualifier("anyObjectRoutes") final Resource anyObjectRoutes,
+ @Qualifier("groupRoutes") final Resource groupRoutes,
+ @Qualifier("userRoutes") final Resource userRoutes) {
return new CamelRouteLoader(userRoutes, groupRoutes, anyObjectRoutes);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public CamelRouteLogic camelRouteLogic(
final CamelRouteDAO routeDAO,
final CamelRouteDataBinder binder,
diff --git a/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/CamelPersistenceContext.java b/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/CamelPersistenceContext.java
index c39d33c..900f759 100644
--- a/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/CamelPersistenceContext.java
+++ b/ext/camel/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/CamelPersistenceContext.java
@@ -26,7 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class CamelPersistenceContext {
@ConditionalOnMissingBean
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelProvisioningContext.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelProvisioningContext.java
index ac5d5ef..35b3233 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelProvisioningContext.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/CamelProvisioningContext.java
@@ -24,14 +24,13 @@ import org.apache.syncope.core.provisioning.api.GroupProvisioningManager;
import org.apache.syncope.core.provisioning.api.UserProvisioningManager;
import org.apache.syncope.core.provisioning.api.data.CamelRouteDataBinder;
import org.apache.syncope.core.provisioning.camel.data.CamelRouteDataBinderImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class CamelProvisioningContext {
@Bean
@@ -51,13 +50,11 @@ public class CamelProvisioningContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SyncopeCamelContext syncopeCamelContext(final CamelRouteDAO routeDAO) {
return new SyncopeCamelContext(routeDAO);
}
@Bean
- @Autowired
public UserProvisioningManager userProvisioningManager(
final CamelRouteDAO routeDAO,
final SyncopeCamelContext contextFactory) {
@@ -66,7 +63,6 @@ public class CamelProvisioningContext {
}
@Bean
- @Autowired
public GroupProvisioningManager groupProvisioningManager(
final CamelRouteDAO routeDAO,
final SyncopeCamelContext contextFactory) {
@@ -75,7 +71,6 @@ public class CamelProvisioningContext {
}
@Bean
- @Autowired
public AnyObjectProvisioningManager anyObjectProvisioningManager(
final CamelRouteDAO routeDAO,
final SyncopeCamelContext contextFactory) {
@@ -85,7 +80,6 @@ public class CamelProvisioningContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public CamelRouteDataBinder camelRouteDataBinder(final CamelRouteDAO routeDAO) {
return new CamelRouteDataBinderImpl(routeDAO);
}
diff --git a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/component/PropagateComponent.java b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/component/PropagateComponent.java
index 93274ed..ce00b0f 100644
--- a/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/component/PropagateComponent.java
+++ b/ext/camel/provisioning-camel/src/main/java/org/apache/syncope/core/provisioning/camel/component/PropagateComponent.java
@@ -19,7 +19,6 @@
package org.apache.syncope.core.provisioning.camel.component;
import java.util.Map;
-import javax.annotation.Resource;
import org.apache.camel.Endpoint;
import org.apache.camel.support.DefaultComponent;
import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
@@ -28,6 +27,7 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.provisioning.api.data.GroupDataBinder;
import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
+import org.apache.syncope.core.spring.security.SecurityProperties;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,8 +54,8 @@ public class PropagateComponent extends DefaultComponent {
@Autowired
protected UserWorkflowAdapter uwfAdapter;
- @Resource(name = "adminUser")
- protected String adminUser;
+ @Autowired
+ protected SecurityProperties props;
@Override
protected Endpoint createEndpoint(
@@ -82,7 +82,7 @@ public class PropagateComponent extends DefaultComponent {
executor = (String) parameters.get("eraser");
}
if (executor == null) {
- executor = adminUser;
+ executor = props.getAdminUser();
}
endpoint.setExecutor(executor);
diff --git a/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CamelRESTCXFContext.java b/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CamelRESTCXFContext.java
index e29441b..1437d0d 100644
--- a/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CamelRESTCXFContext.java
+++ b/ext/camel/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/CamelRESTCXFContext.java
@@ -21,17 +21,15 @@ package org.apache.syncope.core.rest.cxf;
import org.apache.syncope.common.rest.api.service.CamelRouteService;
import org.apache.syncope.core.logic.CamelRouteLogic;
import org.apache.syncope.core.rest.cxf.service.CamelRouteServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class CamelRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public CamelRouteService camelRouteService(final CamelRouteLogic camelRouteLogic) {
return new CamelRouteServiceImpl(camelRouteLogic);
}
diff --git a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
index dbacb5e..babd0d7 100644
--- a/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
+++ b/ext/elasticsearch/client-elasticsearch/src/main/java/org/apache/syncope/ext/elasticsearch/client/ElasticsearchClientContext.java
@@ -24,13 +24,12 @@ import org.apache.http.HttpHost;
import org.apache.syncope.core.persistence.api.dao.AnyObjectDAO;
import org.apache.syncope.core.persistence.api.dao.GroupDAO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class ElasticsearchClientContext {
@ConditionalOnMissingBean
@@ -42,7 +41,6 @@ public class ElasticsearchClientContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ElasticsearchUtils elasticsearchUtils(
final @Lazy UserDAO userDAO,
final @Lazy GroupDAO groupDAO,
@@ -58,7 +56,6 @@ public class ElasticsearchClientContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public ElasticsearchIndexManager elasticsearchIndexManager(
final ElasticsearchClient client,
final ElasticsearchUtils elasticsearchUtils) {
diff --git a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java
index ccc8421..d2232d3 100644
--- a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java
+++ b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/ElasticsearchPersistenceContext.java
@@ -31,25 +31,22 @@ import org.apache.syncope.core.persistence.jpa.dao.ElasticsearchAnySearchDAO;
import org.apache.syncope.ext.elasticsearch.client.ElasticsearchIndexManager;
import org.apache.syncope.ext.elasticsearch.client.ElasticsearchUtils;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class ElasticsearchPersistenceContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public DomainIndexLoader domainIndexLoader(final ElasticsearchIndexManager indexManager) {
return new DomainIndexLoader(indexManager);
}
@ConditionalOnMissingBean(name = "elasticsearchAnySearchDAO")
@Bean
- @Autowired
public AnySearchDAO anySearchDAO(
final RealmDAO realmDAO,
final @Lazy DynRealmDAO dynRealmDAO,
diff --git a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/FlowableWorkflowContext.java b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/FlowableWorkflowContext.java
index 378ebd5..e23ac76 100644
--- a/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/FlowableWorkflowContext.java
+++ b/ext/flowable/flowable-bpmn/src/main/java/org/apache/syncope/core/flowable/FlowableWorkflowContext.java
@@ -52,7 +52,6 @@ import org.flowable.common.engine.impl.persistence.StrongUuidGenerator;
import org.flowable.idm.spring.SpringIdmEngineConfiguration;
import org.flowable.idm.spring.configurator.SpringIdmEngineConfigurator;
import org.flowable.spring.SpringProcessEngineConfiguration;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
@@ -63,24 +62,12 @@ import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
@EnableConfigurationProperties(WorkflowFlowableProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class FlowableWorkflowContext {
- @Autowired
- private WorkflowFlowableProperties props;
-
- @Autowired
- private ResourceLoader resourceLoader;
-
- @Autowired
- private ConfigurableApplicationContext ctx;
-
- @Autowired
- private SecurityProperties securityProperties;
-
@ConditionalOnMissingBean
@Bean
- public SpringIdmEngineConfiguration syncopeIdmEngineConfiguration() {
+ public SpringIdmEngineConfiguration syncopeIdmEngineConfiguration(final ConfigurableApplicationContext ctx) {
SpringIdmEngineConfiguration conf = new SpringIdmEngineConfiguration();
conf.setIdmIdentityService(new SyncopeIdmIdentityService(conf, ctx));
return conf;
@@ -88,9 +75,10 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
- public SpringIdmEngineConfigurator syncopeIdmEngineConfigurator() {
+ public SpringIdmEngineConfigurator syncopeIdmEngineConfigurator(
+ final SpringIdmEngineConfiguration syncopeIdmEngineConfiguration) {
SpringIdmEngineConfigurator configurator = new SpringIdmEngineConfigurator();
- configurator.setIdmEngineConfiguration(syncopeIdmEngineConfiguration());
+ configurator.setIdmEngineConfiguration(syncopeIdmEngineConfiguration);
return configurator;
}
@@ -102,15 +90,14 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public FlowableBpmnProcessManager bpmnProcessManager(final DomainProcessEngine engine) {
return new FlowableBpmnProcessManager(engine);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public FlowableUserRequestHandler userRequestHandler(
+ final SecurityProperties securityProperties,
final UserDataBinder userDataBinder,
final DomainProcessEngine engine,
final UserDAO userDAO,
@@ -126,7 +113,6 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public FlowableWorkflowUtils flowableUtils(final DomainProcessEngine engine) {
return new FlowableWorkflowUtils(engine);
}
@@ -146,34 +132,39 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
@Scope("prototype")
- public SpringProcessEngineConfiguration processEngineConfiguration() {
+ public SpringProcessEngineConfiguration processEngineConfiguration(
+ final WorkflowFlowableProperties props,
+ final SpringIdmEngineConfigurator syncopeIdmEngineConfigurator,
+ final IdGenerator idGenerator,
+ final SyncopeEntitiesVariableType syncopeEntitiesVariableType,
+ final SyncopeFormHandlerHelper syncopeFormHandlerHelper) {
SpringProcessEngineConfiguration conf = new SpringProcessEngineConfiguration();
conf.setDatabaseSchemaUpdate(AbstractEngineConfiguration.DB_SCHEMA_UPDATE_TRUE);
conf.setJpaHandleTransaction(true);
conf.setJpaCloseEntityManager(false);
conf.setHistoryLevel(props.getHistoryLevel());
- conf.setIdmEngineConfigurator(syncopeIdmEngineConfigurator());
- conf.setCustomPreVariableTypes(List.of(syncopeEntitiesVariableType()));
- conf.setFormHandlerHelper(syncopeFormHandlerHelper());
- conf.setIdGenerator(idGenerator());
+ conf.setIdmEngineConfigurator(syncopeIdmEngineConfigurator);
+ conf.setCustomPreVariableTypes(List.of(syncopeEntitiesVariableType));
+ conf.setFormHandlerHelper(syncopeFormHandlerHelper);
+ conf.setIdGenerator(idGenerator);
conf.setPreBpmnParseHandlers(List.of(new ShellServiceTaskDisablingBpmnParseHandler()));
return conf;
}
@ConditionalOnMissingBean
@Bean
- public DomainProcessEngineFactoryBean domainProcessEngineFactoryBean() {
+ public DomainProcessEngineFactoryBean domainProcessEngineFactoryBean(final ConfigurableApplicationContext ctx) {
return new DomainProcessEngineFactoryBean(ctx);
}
@Bean
- public Resource userWorkflowDef() {
+ public Resource userWorkflowDef(final WorkflowFlowableProperties props,
+ final ResourceLoader resourceLoader) {
return resourceLoader.getResource(props.getUserWorkflowDef());
}
@ConditionalOnMissingBean(name = "flowableUWFAdapter")
@Bean
- @Autowired
public UserWorkflowAdapter uwfAdapter(
final UserDataBinder userDataBinder,
final UserDAO userDAO,
@@ -191,14 +182,12 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public AutoActivate autoActivate(final UserDataBinder userDataBinder, final UserDAO userDAO) {
return new AutoActivate(userDataBinder, userDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public Create create(final UserDataBinder userDataBinder, final EntityFactory entityFactory) {
return new Create(userDataBinder, entityFactory);
}
@@ -211,21 +200,18 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public GenerateToken generateToken(final ConfParamOps confParamOps) {
return new GenerateToken(confParamOps);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public Notify notify(final NotificationManager notificationManager) {
return new Notify(notificationManager);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public PasswordReset passwordReset(final UserDataBinder userDataBinder, final UserDAO userDAO) {
return new PasswordReset(userDataBinder, userDAO);
}
@@ -244,7 +230,6 @@ public class FlowableWorkflowContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public Update update(final UserDataBinder userDataBinder, final UserDAO userDAO) {
return new Update(userDataBinder, userDAO);
}
diff --git a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/FlowableLogicContext.java b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/FlowableLogicContext.java
index 8f091dd..884e0d3 100644
--- a/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/FlowableLogicContext.java
+++ b/ext/flowable/logic/src/main/java/org/apache/syncope/core/logic/FlowableLogicContext.java
@@ -27,50 +27,37 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.apache.syncope.core.provisioning.api.propagation.PropagationManager;
import org.apache.syncope.core.provisioning.api.propagation.PropagationTaskExecutor;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class FlowableLogicContext {
- @javax.annotation.Resource(name = "userWorkflowDef")
- private Resource userWorkflowDef;
-
- @Autowired
- private BpmnProcessManager bpmnProcessManager;
-
- @Autowired
- private PropagationManager propagationManager;
-
- @Autowired
- private PropagationTaskExecutor taskExecutor;
-
- @Autowired
- private UserDataBinder binder;
-
- @Autowired
- private UserDAO userDAO;
-
@ConditionalOnMissingBean
@Bean
- @Autowired
- public FlowableLoader flowableLoader(final DomainProcessEngine engine) {
+ public FlowableLoader flowableLoader(final DomainProcessEngine engine,
+ @Qualifier("userWorkflowDef")
+ final Resource userWorkflowDef) {
return new FlowableLoader(userWorkflowDef, engine);
}
@ConditionalOnMissingBean
@Bean
- public BpmnProcessLogic bpmnProcessLogic() {
+ public BpmnProcessLogic bpmnProcessLogic(final BpmnProcessManager bpmnProcessManager) {
return new BpmnProcessLogic(bpmnProcessManager);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
- public UserRequestLogic userRequestLogic(final UserRequestHandler userRequestHandler) {
+ public UserRequestLogic userRequestLogic(final UserRequestHandler userRequestHandler,
+ final UserDataBinder binder,
+ final BpmnProcessManager bpmnProcessManager,
+ final PropagationTaskExecutor taskExecutor,
+ final UserDAO userDAO,
+ final PropagationManager propagationManager) {
return new UserRequestLogic(
bpmnProcessManager,
userRequestHandler,
@@ -82,8 +69,11 @@ public class FlowableLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public UserWorkflowTaskLogic userWorkflowTaskLogic(final WorkflowTaskManager wfTaskManager) {
+ public UserWorkflowTaskLogic userWorkflowTaskLogic(final WorkflowTaskManager wfTaskManager,
+ final UserDataBinder binder,
+ final UserDAO userDAO,
+ final PropagationTaskExecutor taskExecutor,
+ final PropagationManager propagationManager) {
return new UserWorkflowTaskLogic(wfTaskManager, propagationManager, taskExecutor, binder, userDAO);
}
}
diff --git a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/FlowableRESTCXFContext.java b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/FlowableRESTCXFContext.java
index 069dfa6..e2f3f79 100644
--- a/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/FlowableRESTCXFContext.java
+++ b/ext/flowable/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/FlowableRESTCXFContext.java
@@ -28,31 +28,27 @@ import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.rest.cxf.service.BpmnProcessServiceImpl;
import org.apache.syncope.core.rest.cxf.service.UserRequestServiceImpl;
import org.apache.syncope.core.rest.cxf.service.UserWorkflowTaskServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class FlowableRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public BpmnProcessService bpmnProcessService(final BpmnProcessLogic bpmnProcessLogic) {
return new BpmnProcessServiceImpl(bpmnProcessLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserRequestService userRequestService(final UserRequestLogic userRequestLogic, final UserDAO userDAO) {
return new UserRequestServiceImpl(userRequestLogic, userDAO);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserWorkflowTaskService userWorkflowTaskService(final UserWorkflowTaskLogic userWorkflowTaskLogic) {
return new UserWorkflowTaskServiceImpl(userWorkflowTaskLogic);
}
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogicContext.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogicContext.java
index 7746a0d..5dd2034 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogicContext.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UILogicContext.java
@@ -31,17 +31,13 @@ import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.apache.syncope.core.provisioning.java.pushpull.InboundMatcher;
import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
import org.apache.syncope.core.spring.security.AuthDataAccessor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class OIDCC4UILogicContext {
- @Autowired
- private OIDCC4UIProviderDAO opDAO;
-
@ConditionalOnMissingBean
@Bean
public OIDCClientCache oidcClientCache() {
@@ -56,7 +52,6 @@ public class OIDCC4UILogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCUserManager oidcUserManager(
final InboundMatcher inboundMatcher,
final UserDAO userDAO,
@@ -76,20 +71,21 @@ public class OIDCC4UILogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCC4UILogic oidcc4UILogic(
+ final OIDCC4UIProviderDAO opDAO,
final OIDCClientCache oidcClientCache,
final AuthDataAccessor authDataAccessor,
final AccessTokenDataBinder accessTokenDataBinder,
final OIDCUserManager userManager) {
- return new OIDCC4UILogic(oidcClientCache, authDataAccessor, accessTokenDataBinder, opDAO, userManager);
+ return new OIDCC4UILogic(oidcClientCache, authDataAccessor,
+ accessTokenDataBinder, opDAO, userManager);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCC4UIProviderLogic oidcc4UIProviderLogic(
+ final OIDCC4UIProviderDAO opDAO,
final OIDCClientCache oidcClientCache,
final OIDCC4UIProviderDataBinder binder) {
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
index 64d418b..6949732 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
@@ -141,7 +141,7 @@ public class OIDCC4UIProviderLogic extends AbstractTransactionalLogic<OIDCC4UIPr
if (key != null) {
try {
return binder.getOIDCProviderTO(opDAO.find(key));
- } catch (Throwable ignore) {
+ } catch (final Throwable ignore) {
LOG.debug("Unresolved reference", ignore);
throw new UnresolvedReferenceException(ignore);
}
diff --git a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/OIDCC4UIPersistenceContext.java b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/OIDCC4UIPersistenceContext.java
index 746f539..0fd0b0a 100644
--- a/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/OIDCC4UIPersistenceContext.java
+++ b/ext/oidcc4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/OIDCC4UIPersistenceContext.java
@@ -26,7 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class OIDCC4UIPersistenceContext {
@ConditionalOnMissingBean
diff --git a/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProvisioningContext.java b/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProvisioningContext.java
index 02b49d2..844584a 100644
--- a/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProvisioningContext.java
+++ b/ext/oidcc4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/OIDCC4UIProvisioningContext.java
@@ -24,17 +24,15 @@ import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
import org.apache.syncope.core.persistence.api.entity.OIDCC4UIEntityFactory;
import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
import org.apache.syncope.core.provisioning.api.data.OIDCC4UIProviderDataBinder;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class OIDCC4UIProvisioningContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCC4UIProviderDataBinder oidcc4UIProviderDataBinder(
final AnyTypeDAO anyTypeDAO,
final OIDCC4UIProviderDAO oidcOPDAO,
diff --git a/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/OIDCC4UIRESTCXFContext.java b/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/OIDCC4UIRESTCXFContext.java
index 71e97f2..9c0f12e 100644
--- a/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/OIDCC4UIRESTCXFContext.java
+++ b/ext/oidcc4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/OIDCC4UIRESTCXFContext.java
@@ -24,24 +24,21 @@ import org.apache.syncope.core.logic.OIDCC4UILogic;
import org.apache.syncope.core.logic.OIDCC4UIProviderLogic;
import org.apache.syncope.core.rest.cxf.service.OIDCC4UIProviderServiceImpl;
import org.apache.syncope.core.rest.cxf.service.OIDCC4UIServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class OIDCC4UIRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCC4UIService oidcc4UIService(final OIDCC4UILogic oidcc4UILogic) {
return new OIDCC4UIServiceImpl(oidcc4UILogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public OIDCC4UIProviderService oidcc4UIProviderService(final OIDCC4UIProviderLogic oidcc4UIProviderLogic) {
return new OIDCC4UIProviderServiceImpl(oidcc4UIProviderLogic);
}
diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogicContext.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogicContext.java
index 31ab904..5b1e86b 100644
--- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogicContext.java
+++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/SAML2SP4UILogicContext.java
@@ -31,7 +31,6 @@ import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.apache.syncope.core.provisioning.java.pushpull.InboundMatcher;
import org.apache.syncope.core.provisioning.java.utils.TemplateUtils;
import org.apache.syncope.core.spring.security.AuthDataAccessor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
@@ -39,15 +38,9 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.ResourcePatternResolver;
@EnableConfigurationProperties(SAML2SP4UIProperties.class)
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SAML2SP4UILogicContext {
- @Autowired
- private SAML2SP4UIProperties props;
-
- @Autowired
- private SAML2SP4UIIdPDAO idpDAO;
-
@ConditionalOnMissingBean
@Bean
public SAML2ClientCache saml2ClientCache() {
@@ -56,15 +49,15 @@ public class SAML2SP4UILogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
- public SAML2SP4UILoader saml2SP4UILoader(final ResourcePatternResolver resourceResolver) {
+ public SAML2SP4UILoader saml2SP4UILoader(final ResourcePatternResolver resourceResolver,
+ final SAML2SP4UIProperties props) {
return new SAML2SP4UILoader(props, resourceResolver);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SP4UIIdPLogic saml2SP4UIIdPLogic(
+ final SAML2SP4UIIdPDAO idpDAO,
final SAML2ClientCache saml2ClientCache,
final SAML2SP4UILoader loader,
final SAML2SP4UIIdPDataBinder binder) {
@@ -74,8 +67,8 @@ public class SAML2SP4UILogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SP4UIUserManager saml2SP4UIUserManager(
+ final SAML2SP4UIIdPDAO idpDAO,
final InboundMatcher inboundMatcher,
final UserDAO userDAO,
final IntAttrNameParser intAttrNameParser,
@@ -95,8 +88,8 @@ public class SAML2SP4UILogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SP4UILogic saml2SP4UILogic(
+ final SAML2SP4UIIdPDAO idpDAO,
final SAML2ClientCache saml2ClientCache,
final SAML2SP4UILoader loader,
final AccessTokenDataBinder accessTokenDataBinder,
diff --git a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/SAML2SP4UIPersistenceContext.java b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/SAML2SP4UIPersistenceContext.java
index 1098af2..9c4816d 100644
--- a/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/SAML2SP4UIPersistenceContext.java
+++ b/ext/saml2sp4ui/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/SAML2SP4UIPersistenceContext.java
@@ -26,7 +26,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SAML2SP4UIPersistenceContext {
@ConditionalOnMissingBean
diff --git a/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/SAML2SP4UIProvisioningContext.java b/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/SAML2SP4UIProvisioningContext.java
index e092568..47296eb 100644
--- a/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/SAML2SP4UIProvisioningContext.java
+++ b/ext/saml2sp4ui/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/SAML2SP4UIProvisioningContext.java
@@ -25,17 +25,15 @@ import org.apache.syncope.core.persistence.api.entity.SAML2SP4UIEntityFactory;
import org.apache.syncope.core.provisioning.api.IntAttrNameParser;
import org.apache.syncope.core.provisioning.api.data.SAML2SP4UIIdPDataBinder;
import org.apache.syncope.core.provisioning.java.data.SAML2SP4UIIdPDataBinderImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SAML2SP4UIProvisioningContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SP4UIIdPDataBinder saml2SP4UIIdPDataBinder(
final AnyTypeDAO anyTypeDAO,
final SAML2SP4UIIdPDAO idapDAO,
diff --git a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SAML2SP4UIRESTCXFContext.java b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SAML2SP4UIRESTCXFContext.java
index 427ca34..a608dfe 100644
--- a/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SAML2SP4UIRESTCXFContext.java
+++ b/ext/saml2sp4ui/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SAML2SP4UIRESTCXFContext.java
@@ -24,24 +24,21 @@ import org.apache.syncope.core.logic.SAML2SP4UIIdPLogic;
import org.apache.syncope.core.logic.SAML2SP4UILogic;
import org.apache.syncope.core.rest.cxf.service.SAML2SP4UIIdPServiceImpl;
import org.apache.syncope.core.rest.cxf.service.SAML2SP4UIServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SAML2SP4UIRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SP4UIService saml2SP4UIService(final SAML2SP4UILogic saml2SP4UIService) {
return new SAML2SP4UIServiceImpl(saml2SP4UIService);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SAML2SP4UIIdPService saml2SP4UIIdPService(final SAML2SP4UIIdPLogic saml2SP4UIIdPLogic) {
return new SAML2SP4UIIdPServiceImpl(saml2SP4UIIdPLogic);
}
diff --git a/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMLogicContext.java b/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMLogicContext.java
index e48748f..559146e 100644
--- a/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMLogicContext.java
+++ b/ext/scimv2/logic/src/main/java/org/apache/syncope/core/logic/SCIMLogicContext.java
@@ -22,12 +22,11 @@ import org.apache.syncope.common.keymaster.client.api.ConfParamOps;
import org.apache.syncope.core.logic.init.SCIMLoader;
import org.apache.syncope.core.logic.scim.SCIMConfManager;
import org.apache.syncope.core.spring.security.AuthDataAccessor;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SCIMLogicContext {
@ConditionalOnMissingBean
@@ -38,14 +37,12 @@ public class SCIMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SCIMConfManager scimConfManager(final ConfParamOps confParamOps, final SchemaLogic schemaLogic) {
return new SCIMConfManager(confParamOps, schemaLogic);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SCIMDataBinder scimDataBinder(
final SCIMConfManager confManager,
final UserLogic userLogic,
@@ -56,7 +53,6 @@ public class SCIMLogicContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SCIMLogic scimLogic(final SCIMConfManager confManager) {
return new SCIMLogic(confManager);
}
diff --git a/ext/scimv2/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SCIMRESTCXFContext.java b/ext/scimv2/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SCIMRESTCXFContext.java
index 7570bd5..e94a747 100644
--- a/ext/scimv2/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SCIMRESTCXFContext.java
+++ b/ext/scimv2/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/SCIMRESTCXFContext.java
@@ -21,17 +21,15 @@ package org.apache.syncope.core.rest.cxf;
import org.apache.syncope.common.rest.api.service.SCIMConfService;
import org.apache.syncope.core.logic.scim.SCIMConfManager;
import org.apache.syncope.core.rest.cxf.service.SCIMConfServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SCIMRESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SCIMConfService scimConfService(final SCIMConfManager scimConfManager) {
return new SCIMConfServiceImpl(scimConfManager);
}
diff --git a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMv2RESTCXFContext.java b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMv2RESTCXFContext.java
index 1046020..abc84e0 100644
--- a/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMv2RESTCXFContext.java
+++ b/ext/scimv2/scim-rest-cxf/src/main/java/org/apache/syncope/ext/scimv2/cxf/SCIMv2RESTCXFContext.java
@@ -40,21 +40,14 @@ import org.apache.syncope.ext.scimv2.api.service.UserService;
import org.apache.syncope.ext.scimv2.cxf.service.GroupServiceImpl;
import org.apache.syncope.ext.scimv2.cxf.service.SCIMServiceImpl;
import org.apache.syncope.ext.scimv2.cxf.service.UserServiceImpl;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SCIMv2RESTCXFContext {
- @Autowired
- private Bus bus;
-
- @Autowired
- private ApplicationContext ctx;
-
@ConditionalOnMissingBean
@Bean
public SCIMJacksonJsonProvider scimJacksonJsonProvider() {
@@ -75,7 +68,10 @@ public class SCIMv2RESTCXFContext {
@ConditionalOnMissingBean(name = "scimv2Container")
@Bean
- public Server scimv2Container() {
+ public Server scimv2Container(final ApplicationContext ctx, final Bus bus,
+ final SCIMJacksonJsonProvider scimJacksonJsonProvider,
+ final SCIMExceptionMapper scimExceptionMapper,
+ final AddETagFilter scimAddETagFilter) {
SpringJAXRSServerFactoryBean scimv2Container = new SpringJAXRSServerFactoryBean();
scimv2Container.setBus(bus);
scimv2Container.setAddress("/scim");
@@ -93,9 +89,9 @@ public class SCIMv2RESTCXFContext {
ctx.getBean(GZIPOutInterceptor.class)));
scimv2Container.setProviders(List.of(
- scimJacksonJsonProvider(),
- scimExceptionMapper(),
- scimAddETagFilter()));
+ scimJacksonJsonProvider,
+ scimExceptionMapper,
+ scimAddETagFilter));
scimv2Container.setApplicationContext(ctx);
return scimv2Container.create();
@@ -103,7 +99,6 @@ public class SCIMv2RESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public SCIMService scimService(
final UserDAO userDAO,
final GroupDAO groupDAO,
@@ -118,7 +113,6 @@ public class SCIMv2RESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public GroupService scimv2GroupService(
final UserDAO userDAO,
final GroupDAO groupDAO,
@@ -132,7 +126,6 @@ public class SCIMv2RESTCXFContext {
@ConditionalOnMissingBean
@Bean
- @Autowired
public UserService scimv2UserService(
final UserDAO userDAO,
final GroupDAO groupDAO,
diff --git a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/SyncopeBuildToolsApplication.java b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/SyncopeBuildToolsApplication.java
index 55ee22b..ec1ea72 100644
--- a/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/SyncopeBuildToolsApplication.java
+++ b/fit/build-tools/src/main/java/org/apache/syncope/fit/buildtools/SyncopeBuildToolsApplication.java
@@ -34,7 +34,6 @@ import org.apache.syncope.fit.buildtools.cxf.DateParamConverterProvider;
import org.apache.syncope.fit.buildtools.cxf.GreenMailService;
import org.apache.syncope.fit.buildtools.cxf.ProvisioningImpl;
import org.apache.syncope.fit.buildtools.cxf.UserService;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
@@ -50,7 +49,7 @@ import org.springframework.jdbc.datasource.DriverManagerDataSource;
@SpringBootApplication(exclude = {
ErrorMvcAutoConfiguration.class,
WebMvcAutoConfiguration.class,
- HttpMessageConvertersAutoConfiguration.class })
+ HttpMessageConvertersAutoConfiguration.class }, proxyBeanMethods = false)
public class SyncopeBuildToolsApplication extends SpringBootServletInitializer {
public static void main(final String[] args) {
@@ -69,12 +68,6 @@ public class SyncopeBuildToolsApplication extends SpringBootServletInitializer {
@Value("${testdb.password}")
private String testDbPassword;
- @Autowired
- private Bus bus;
-
- @Autowired
- private ApplicationContext ctx;
-
@Bean
public DriverManagerDataSource testDataSource() {
DriverManagerDataSource testDataSource = new DriverManagerDataSource(testDbUrl, testDbUsername, testDbPassword);
@@ -83,14 +76,13 @@ public class SyncopeBuildToolsApplication extends SpringBootServletInitializer {
}
@Bean
- @Autowired
public Provisioning provisioningImpl(@Qualifier("testDataSource") final DataSource dataSource) {
return new ProvisioningImpl(dataSource);
}
@Bean
- @Autowired
- public Endpoint soapProvisioning(final Provisioning provisioning) {
+ public Endpoint soapProvisioning(final Provisioning provisioning,
+ final Bus bus) {
EndpointImpl soapProvisioning = new EndpointImpl(provisioning);
soapProvisioning.setBus(bus);
soapProvisioning.publish("/soap");
@@ -108,8 +100,8 @@ public class SyncopeBuildToolsApplication extends SpringBootServletInitializer {
}
@Bean
- @Autowired
- public Server restProvisioning(final GreenMailService greenMailService, final UserService userService) {
+ public Server restProvisioning(final GreenMailService greenMailService, final UserService userService,
+ final ApplicationContext ctx, final Bus bus) {
SpringJAXRSServerFactoryBean restProvisioning = new SpringJAXRSServerFactoryBean();
restProvisioning.setApplicationContext(ctx);
restProvisioning.setBus(bus);
diff --git a/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/AssignDirectorGroup.java b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/AssignDirectorGroup.java
index 7ed5bd5..523385c 100644
--- a/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/AssignDirectorGroup.java
+++ b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/AssignDirectorGroup.java
@@ -28,17 +28,15 @@ import org.apache.syncope.core.persistence.api.entity.user.User;
import org.apache.syncope.core.provisioning.api.PropagationByResource;
import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.flowable.engine.delegate.DelegateExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-@Component
public class AssignDirectorGroup extends FlowableServiceTask {
+ private final UserDataBinder dataBinder;
+ private final UserDAO userDAO;
- @Autowired
- private UserDataBinder dataBinder;
-
- @Autowired
- private UserDAO userDAO;
+ public AssignDirectorGroup(final UserDataBinder dataBinder, final UserDAO userDAO) {
+ this.dataBinder = dataBinder;
+ this.userDAO = userDAO;
+ }
@Override
protected void doExecute(final DelegateExecution execution) {
diff --git a/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/CreateARelationship.java b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/CreateARelationship.java
index 1ca0940..e781bf4 100644
--- a/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/CreateARelationship.java
+++ b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/CreateARelationship.java
@@ -29,17 +29,17 @@ import org.apache.syncope.core.persistence.api.entity.user.User;
import org.apache.syncope.core.provisioning.api.PropagationByResource;
import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.flowable.engine.delegate.DelegateExecution;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-@Component
public class CreateARelationship extends FlowableServiceTask {
- @Autowired
- private UserDataBinder dataBinder;
+ private final UserDataBinder dataBinder;
- @Autowired
- private UserDAO userDAO;
+ private final UserDAO userDAO;
+
+ public CreateARelationship(final UserDataBinder dataBinder, final UserDAO userDAO) {
+ this.dataBinder = dataBinder;
+ this.userDAO = userDAO;
+ }
@Override
protected void doExecute(final DelegateExecution execution) {
diff --git a/client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/FlowableConfiguration.java
similarity index 51%
copy from client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java
copy to fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/FlowableConfiguration.java
index e3ff01a..6adbde0 100644
--- a/client/am/console/src/main/java/org/apache/syncope/client/console/SyncopeAMConsoleContext.java
+++ b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/FlowableConfiguration.java
@@ -16,32 +16,31 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.syncope.client.console;
-import org.apache.syncope.client.console.commons.AMPolicyTabProvider;
-import org.apache.syncope.client.console.commons.AMRealmPolicyProvider;
-import org.apache.syncope.client.console.commons.PolicyTabProvider;
-import org.apache.syncope.client.console.commons.RealmPolicyProvider;
-import org.apache.syncope.client.console.init.AMClassPathScanImplementationContributor;
-import org.apache.syncope.client.console.init.ClassPathScanImplementationContributor;
+package org.apache.syncope.fit.core.reference.flowable;
+
+import org.apache.syncope.core.persistence.api.dao.AnySearchDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.provisioning.api.data.UserDataBinder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration
-public class SyncopeAMConsoleContext {
-
+@Configuration(proxyBeanMethods = false)
+public class FlowableConfiguration {
@Bean
- public ClassPathScanImplementationContributor amClassPathScanImplementationContributor() {
- return new AMClassPathScanImplementationContributor();
+ public AssignDirectorGroup assignDirectorGroup(final UserDataBinder dataBinder,
+ final UserDAO userDAO) {
+ return new AssignDirectorGroup(dataBinder, userDAO);
}
@Bean
- public RealmPolicyProvider realmPolicyProvider() {
- return new AMRealmPolicyProvider();
+ public CreateARelationship createARelationship(final UserDataBinder dataBinder,
+ final UserDAO userDAO) {
+ return new CreateARelationship(dataBinder, userDAO);
}
@Bean
- public PolicyTabProvider amPolicyTabProvider() {
- return new AMPolicyTabProvider();
+ public PrintersValueProvider printersValueProvider(final AnySearchDAO anySearchDAO) {
+ return new PrintersValueProvider(anySearchDAO);
}
}
diff --git a/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/PrintersValueProvider.java b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/PrintersValueProvider.java
index ae56169..00672dc 100644
--- a/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/PrintersValueProvider.java
+++ b/fit/core-reference/src/main/java-all/org/apache/syncope/fit/core/reference/flowable/PrintersValueProvider.java
@@ -29,11 +29,8 @@ import org.apache.syncope.core.persistence.api.dao.search.AnyTypeCond;
import org.apache.syncope.core.persistence.api.dao.search.OrderByClause;
import org.apache.syncope.core.persistence.api.dao.search.SearchCond;
import org.apache.syncope.core.persistence.api.entity.anyobject.AnyObject;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
-@Component
public class PrintersValueProvider implements DropdownValueProvider {
private static final SearchCond PRINTER_COND;
@@ -51,8 +48,11 @@ public class PrintersValueProvider implements DropdownValueProvider {
ORDER_BY = List.of(orderByNameAsc);
}
- @Autowired
- private AnySearchDAO anySearchDAO;
+ private final AnySearchDAO anySearchDAO;
+
+ public PrintersValueProvider(final AnySearchDAO anySearchDAO) {
+ this.anySearchDAO = anySearchDAO;
+ }
@Transactional(readOnly = true)
@Override
diff --git a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/CoreReferenceContext.java b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/CoreReferenceContext.java
index 8a120fb..81534b7 100644
--- a/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/CoreReferenceContext.java
+++ b/fit/core-reference/src/main/java/org/apache/syncope/fit/core/reference/CoreReferenceContext.java
@@ -26,7 +26,6 @@ import org.apache.syncope.core.persistence.api.dao.ImplementationDAO;
import org.apache.syncope.core.persistence.api.dao.UserDAO;
import org.apache.syncope.core.persistence.api.entity.EntityFactory;
import org.apache.syncope.core.workflow.api.UserWorkflowAdapter;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
@@ -34,11 +33,10 @@ import org.springframework.context.annotation.Configuration;
@AutoConfigureBefore(IdRepoLogicContext.class)
@ComponentScan("org.apache.syncope.fit.core.reference")
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class CoreReferenceContext {
@Bean
- @Autowired
public ElasticsearchInit elasticsearchInit(
final ImplementationDAO implementationDAO,
final EntityFactory entityFactory,
@@ -48,13 +46,11 @@ public class CoreReferenceContext {
}
@Bean
- @Autowired
public EnableFlowableForTestUsers enableFlowableForTestUsers(final UserDAO userDAO) {
return new EnableFlowableForTestUsers(userDAO);
}
@Bean
- @Autowired
public ImplementationLookup implementationLookup(
final UserWorkflowAdapter uwf,
final AnySearchDAO anySearchDAO,
diff --git a/fit/core-reference/src/main/resources/log4j2.xml b/fit/core-reference/src/main/resources/log4j2.xml
index acecff4..a224040 100644
--- a/fit/core-reference/src/main/resources/log4j2.xml
+++ b/fit/core-reference/src/main/resources/log4j2.xml
@@ -20,7 +20,6 @@ under the License.
<configuration status="WARN">
<appenders>
-
<RollingRandomAccessFile name="main" fileName="${log.directory}/core.log"
filePattern="${log.directory}/core-%d{yyyy-MM-dd}.log.gz"
immediateFlush="false" append="true">
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
index 2e5e220..985da5c 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/console/AbstractConsoleITCase.java
@@ -60,7 +60,7 @@ import org.springframework.test.context.support.TestPropertySourceUtils;
public abstract class AbstractConsoleITCase extends AbstractUIITCase {
@ImportAutoConfiguration(classes = { SelfKeymasterClientContext.class, ZookeeperKeymasterClientContext.class })
- @Configuration
+ @Configuration(proxyBeanMethods = false)
public static class SyncopeConsoleWebApplicationTestConfig {
@Bean
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CoreITContext.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CoreITContext.java
index a85f4d0..b0fad17 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CoreITContext.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/CoreITContext.java
@@ -26,7 +26,7 @@ import org.springframework.context.annotation.PropertySource;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
@PropertySource("classpath:test.properties")
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class CoreITContext {
@Value("${testdb.driver}")
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java
index 0e08057..f8788ed 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/enduser/AbstractEnduserITCase.java
@@ -64,7 +64,7 @@ import org.springframework.test.context.support.TestPropertySourceUtils;
public abstract class AbstractEnduserITCase extends AbstractUIITCase {
@ImportAutoConfiguration(classes = { SelfKeymasterClientContext.class, ZookeeperKeymasterClientContext.class })
- @Configuration
+ @Configuration(proxyBeanMethods = false)
public static class SyncopeEnduserWebApplicationTestConfig {
@Bean
diff --git a/fit/wa-reference/src/main/resources/log4j2.xml b/fit/wa-reference/src/main/resources/log4j2.xml
index 5eca0fd..c126ea3 100644
--- a/fit/wa-reference/src/main/resources/log4j2.xml
+++ b/fit/wa-reference/src/main/resources/log4j2.xml
@@ -63,7 +63,7 @@ under the License.
<appender-ref ref="main"/>
</asyncLogger>
- <asyncLogger name="org.apache.cxf" additivity="false" level="ERROR">
+ <asyncLogger name="org.apache.cxf" additivity="false" level="DEBUG">
<appender-ref ref="main"/>
</asyncLogger>
diff --git a/fit/wa-reference/src/test/resources/log4j2.xml b/fit/wa-reference/src/test/resources/log4j2.xml
index 759b411..d27ffdf 100644
--- a/fit/wa-reference/src/test/resources/log4j2.xml
+++ b/fit/wa-reference/src/test/resources/log4j2.xml
@@ -45,7 +45,11 @@ under the License.
<appender-ref ref="main"/>
</asyncLogger>
- <asyncLogger name="org.apache.cxf" additivity="false" level="ERROR">
+ <asyncLogger name="org.springframework.security" additivity="false" level="DEBUG">
+ <appender-ref ref="main"/>
+ </asyncLogger>
+
+ <asyncLogger name="org.apache.cxf" additivity="false" level="DEBUG">
<appender-ref ref="main"/>
</asyncLogger>
diff --git a/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java b/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java
index e3e75b6..14aeb37 100644
--- a/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java
+++ b/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java
@@ -40,7 +40,8 @@ import org.pac4j.core.http.callback.NoParameterCallbackUrlResolver;
import org.pac4j.saml.client.SAML2Client;
import org.pac4j.saml.config.SAML2Configuration;
import org.pac4j.saml.metadata.keystore.BaseSAML2KeystoreGenerator;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.actuate.autoconfigure.security.reactive.EndpointRequest;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -56,11 +57,13 @@ import org.springframework.http.HttpMethod;
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.core.userdetails.MapReactiveUserDetailsService;
+import org.springframework.security.core.userdetails.ReactiveUserDetailsService;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrations;
import org.springframework.security.oauth2.client.registration.InMemoryReactiveClientRegistrationRepository;
+import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.core.AuthorizationGrantType;
import org.springframework.security.oauth2.core.OAuth2TokenValidator;
import org.springframework.security.oauth2.jose.jws.SignatureAlgorithm;
@@ -76,15 +79,9 @@ import org.springframework.security.web.server.util.matcher.ServerWebExchangeMat
import reactor.core.publisher.Mono;
@EnableWebFluxSecurity
-@Configuration
+@Configuration(proxyBeanMethods = false)
public class SecurityConfig {
- @Autowired
- private ResourcePatternResolver resourceResolver;
-
- @Autowired
- private SRAProperties props;
-
@Bean
@Order(0)
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "SAML2")
@@ -109,7 +106,7 @@ public class SecurityConfig {
}
@Bean
- public MapReactiveUserDetailsService userDetailsService() {
+ public ReactiveUserDetailsService userDetailsService(final SRAProperties props) {
UserDetails user = User.builder().
username(props.getAnonymousUser()).
password("{noop}" + props.getAnonymousKey()).
@@ -120,20 +117,26 @@ public class SecurityConfig {
@Bean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OIDC")
- public InMemoryReactiveClientRegistrationRepository oidcClientRegistrationRepository() {
- return new InMemoryReactiveClientRegistrationRepository(
- ClientRegistrations.fromOidcIssuerLocation(props.getOidc().getConfiguration()).
- registrationId(SRAProperties.AMType.OIDC.name()).
- clientId(props.getOidc().getClientId()).
- clientSecret(props.getOidc().getClientSecret()).
- scope(props.getOidc().getScopes().toArray(new String[0])).
- build());
+ public ClientRegistration oidcClientRegistration(final SRAProperties props) {
+ return ClientRegistrations.fromOidcIssuerLocation(props.getOidc().getConfiguration()).
+ registrationId(SRAProperties.AMType.OIDC.name()).
+ clientId(props.getOidc().getClientId()).
+ clientSecret(props.getOidc().getClientSecret()).
+ scope(props.getOidc().getScopes().toArray(new String[0])).
+ build();
+ }
+
+ @Bean
+ @ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OIDC")
+ public ReactiveClientRegistrationRepository oidcClientRegistrationRepository(
+ @Qualifier("oidcClientRegistration") final ClientRegistration oidcClientRegistration) {
+ return new InMemoryReactiveClientRegistrationRepository(oidcClientRegistration);
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OIDC")
- public OAuth2TokenValidator<Jwt> oidcJWTValidator() {
+ public OAuth2TokenValidator<Jwt> oidcJWTValidator(final SRAProperties props) {
return JwtValidators.createDefaultWithIssuer(props.getOidc().getConfiguration());
}
@@ -146,39 +149,51 @@ public class SecurityConfig {
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OIDC")
- public ReactiveJwtDecoder oidcJWTDecoder() {
- String jwkSetUri = oidcClientRegistrationRepository().iterator().next().getProviderDetails().getJwkSetUri();
+ public ReactiveJwtDecoder oidcJWTDecoder(
+ @Qualifier("oidcClientRegistration")
+ final ClientRegistration oidcClientRegistration,
+ @Qualifier("oidcJWTValidator")
+ final OAuth2TokenValidator<Jwt> oidcJWTValidator,
+ @Qualifier("jwtClaimSetConverter")
+ final Converter<Map<String, Object>, Map<String, Object>> jwtClaimSetConverter) {
+ String jwkSetUri = oidcClientRegistration.getProviderDetails().getJwkSetUri();
NimbusReactiveJwtDecoder jwtDecoder = NimbusReactiveJwtDecoder.withJwkSetUri(jwkSetUri)
.jwsAlgorithm(SignatureAlgorithm.RS256)
.jwsAlgorithm(SignatureAlgorithm.RS512)
.build();
- jwtDecoder.setJwtValidator(oidcJWTValidator());
- jwtDecoder.setClaimSetConverter(jwtClaimSetConverter());
+ jwtDecoder.setJwtValidator(oidcJWTValidator);
+ jwtDecoder.setClaimSetConverter(jwtClaimSetConverter);
return jwtDecoder;
}
@Bean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OAUTH2")
- public InMemoryReactiveClientRegistrationRepository oauth2ClientRegistrationRepository() {
- return new InMemoryReactiveClientRegistrationRepository(
- ClientRegistration.withRegistrationId(SRAProperties.AMType.OAUTH2.name()).
- redirectUri("{baseUrl}/{action}/oauth2/code/{registrationId}").
- tokenUri(props.getOauth2().getTokenUri()).
- authorizationUri(props.getOauth2().getAuthorizationUri()).
- userInfoUri(props.getOauth2().getUserInfoUri()).
- userNameAttributeName(props.getOauth2().getUserNameAttributeName()).
- clientId(props.getOauth2().getClientId()).
- clientSecret(props.getOauth2().getClientSecret()).
- scope(props.getOauth2().getScopes().toArray(new String[0])).
- authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE).
- jwkSetUri(props.getOauth2().getJwkSetUri()).
- build());
+ public ClientRegistration oauth2ClientRegistration(final SRAProperties props) {
+ return ClientRegistration.withRegistrationId(SRAProperties.AMType.OAUTH2.name()).
+ redirectUri("{baseUrl}/{action}/oauth2/code/{registrationId}").
+ tokenUri(props.getOauth2().getTokenUri()).
+ authorizationUri(props.getOauth2().getAuthorizationUri()).
+ userInfoUri(props.getOauth2().getUserInfoUri()).
+ userNameAttributeName(props.getOauth2().getUserNameAttributeName()).
+ clientId(props.getOauth2().getClientId()).
+ clientSecret(props.getOauth2().getClientSecret()).
+ scope(props.getOauth2().getScopes().toArray(new String[0])).
+ authorizationGrantType(AuthorizationGrantType.AUTHORIZATION_CODE).
+ jwkSetUri(props.getOauth2().getJwkSetUri()).
+ build();
+ }
+
+ @Bean
+ @ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OAUTH2")
+ public ReactiveClientRegistrationRepository oauth2ClientRegistrationRepository(
+ @Qualifier("oauth2ClientRegistration") final ClientRegistration oauth2ClientRegistration) {
+ return new InMemoryReactiveClientRegistrationRepository(oauth2ClientRegistration);
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OAUTH2")
- public OAuth2TokenValidator<Jwt> oauth2JWTValidator() {
+ public OAuth2TokenValidator<Jwt> oauth2JWTValidator(final SRAProperties props) {
return props.getOauth2().getIssuer() == null
? JwtValidators.createDefault()
: JwtValidators.createDefaultWithIssuer(props.getOauth2().getIssuer());
@@ -187,8 +202,15 @@ public class SecurityConfig {
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "OAUTH2")
- public ReactiveJwtDecoder oauth2JWTDecoder() {
- String jwkSetUri = oauth2ClientRegistrationRepository().iterator().next().getProviderDetails().getJwkSetUri();
+ public ReactiveJwtDecoder oauth2JWTDecoder(
+ @Qualifier("oauth2ClientRegistration")
+ final ClientRegistration oauth2ClientRegistration,
+ @Qualifier("oauth2JWTValidator")
+ final OAuth2TokenValidator<Jwt> oauth2JWTValidator,
+ @Qualifier("jwtClaimSetConverter")
+ final Converter<Map<String, Object>, Map<String, Object>> jwtClaimSetConverter) {
+
+ String jwkSetUri = oauth2ClientRegistration.getProviderDetails().getJwkSetUri();
NimbusReactiveJwtDecoder jwtDecoder;
if (StringUtils.isBlank(jwkSetUri)) {
jwtDecoder = new NimbusReactiveJwtDecoder(jwt -> {
@@ -201,15 +223,16 @@ public class SecurityConfig {
} else {
jwtDecoder = NimbusReactiveJwtDecoder.withJwkSetUri(jwkSetUri).build();
}
- jwtDecoder.setJwtValidator(oauth2JWTValidator());
- jwtDecoder.setClaimSetConverter(jwtClaimSetConverter());
+ jwtDecoder.setJwtValidator(oauth2JWTValidator);
+ jwtDecoder.setClaimSetConverter(jwtClaimSetConverter);
return jwtDecoder;
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE, havingValue = "SAML2")
- public SAML2Client saml2Client() {
+ public SAML2Client saml2Client(final ResourcePatternResolver resourceResolver,
+ final SRAProperties props) {
SAML2Configuration cfg = new SAML2Configuration(
resourceResolver.getResource(props.getSaml2().getKeystore()),
props.getSaml2().getKeystoreStorePass(),
@@ -265,6 +288,8 @@ public class SecurityConfig {
@Order(2)
@ConditionalOnProperty(prefix = SRAProperties.PREFIX, name = SRAProperties.AM_TYPE)
public SecurityWebFilterChain routesSecurityFilterChain(
+ @Qualifier("saml2Client") final ObjectProvider<SAML2Client> saml2Client,
+ final SRAProperties props,
final ServerHttpSecurity http,
final CacheManager cacheManager,
final LogoutRouteMatcher logoutRouteMatcher,
@@ -285,9 +310,10 @@ public class SecurityConfig {
break;
case SAML2:
- SAML2Client saml2Client = saml2Client();
- SAML2SecurityConfigUtils.forLogin(http, saml2Client, publicRouteMatcher);
- SAML2SecurityConfigUtils.forLogout(builder, saml2Client, cacheManager, logoutRouteMatcher, ctx);
+ saml2Client.ifAvailable(client -> {
+ SAML2SecurityConfigUtils.forLogin(http, client, publicRouteMatcher);
+ SAML2SecurityConfigUtils.forLogout(builder, client, cacheManager, logoutRouteMatcher, ctx);
+ });
break;
case CAS:
diff --git a/sra/src/main/java/org/apache/syncope/sra/SessionConfig.java b/sra/src/main/java/org/apache/syncope/sra/SessionConfig.java
index 27c1edc..2f65be5 100644
--- a/sra/src/main/java/org/apache/syncope/sra/SessionConfig.java
+++ b/sra/src/main/java/org/apache/syncope/sra/SessionConfig.java
@@ -31,7 +31,7 @@ import org.springframework.session.MapSession;
import org.springframework.session.ReactiveSessionRepository;
import org.springframework.session.config.annotation.web.server.EnableSpringWebSession;
-@Configuration
+@Configuration(proxyBeanMethods = false)
@EnableCaching
@EnableSpringWebSession
public class SessionConfig {
diff --git a/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAApplication.java b/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAApplication.java
index ceff488..0714783 100644
--- a/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAApplication.java
+++ b/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAApplication.java
@@ -25,7 +25,10 @@ import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStop;
import org.apache.syncope.sra.actuate.SRASessions;
import org.apache.syncope.sra.actuate.SyncopeCoreHealthIndicator;
import org.apache.syncope.sra.actuate.SyncopeSRAInfoContributor;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.syncope.sra.security.CsrfRouteMatcher;
+import org.apache.syncope.sra.security.LogoutRouteMatcher;
+import org.apache.syncope.sra.security.PublicRouteMatcher;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -35,9 +38,10 @@ import org.springframework.cloud.gateway.route.Route;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
+import org.springframework.web.server.WebExceptionHandler;
import reactor.core.publisher.Flux;
-@SpringBootApplication
+@SpringBootApplication(proxyBeanMethods = false)
@EnableConfigurationProperties(SRAProperties.class)
public class SyncopeSRAApplication {
@@ -47,21 +51,26 @@ public class SyncopeSRAApplication {
build().run(args);
}
- @Autowired
- private ServiceOps serviceOps;
-
- @Autowired
- private SRAProperties props;
-
- @Autowired
- private CacheManager cacheManager;
+ @Bean
+ public LogoutRouteMatcher logoutRouteMatcher() {
+ return new LogoutRouteMatcher();
+ }
- @Autowired
- private ConfigurableApplicationContext ctx;
+ @Bean
+ public PublicRouteMatcher publicRouteMatcher() {
+ return new PublicRouteMatcher();
+ }
+
+ @Bean
+ public CsrfRouteMatcher csrfRouteMatcher(final PublicRouteMatcher publicRouteMatcher) {
+ return new CsrfRouteMatcher(publicRouteMatcher);
+ }
@ConditionalOnMissingBean
@Bean
- public RouteProvider routeProvider() {
+ public RouteProvider routeProvider(final ConfigurableApplicationContext ctx,
+ final ServiceOps serviceOps,
+ final SRAProperties props) {
return new RouteProvider(
serviceOps,
ctx,
@@ -72,19 +81,20 @@ public class SyncopeSRAApplication {
@ConditionalOnMissingBean
@Bean
- public RouteLocator routes() {
- return () -> Flux.fromIterable(routeProvider().fetch()).map(Route.AbstractBuilder::build);
+ public RouteLocator routes(@Qualifier("routeProvider") final RouteProvider routeProvider) {
+ return () -> Flux.fromIterable(routeProvider.fetch()).map(Route.AbstractBuilder::build);
}
@ConditionalOnMissingBean
@Bean
- public SRASessions sraSessionsActuatorEndpoint() {
+ public SRASessions sraSessionsActuatorEndpoint(final CacheManager cacheManager) {
return new SRASessions(cacheManager);
}
@ConditionalOnMissingBean
@Bean
- public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator() {
+ public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator(final ServiceOps serviceOps,
+ final SRAProperties props) {
return new SyncopeCoreHealthIndicator(
serviceOps,
props.getAnonymousUser(),
@@ -107,4 +117,11 @@ public class SyncopeSRAApplication {
public KeymasterStop keymasterStop() {
return new KeymasterStop(NetworkService.Type.SRA);
}
+
+ @Bean
+ public WebExceptionHandler syncopeSRAWebExceptionHandler(
+ @Qualifier("routeProvider") final RouteProvider routeProvider,
+ final SRAProperties props) {
+ return new SyncopeSRAWebExceptionHandler(routeProvider, props);
+ }
}
diff --git a/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAWebExceptionHandler.java b/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAWebExceptionHandler.java
index 38251dc..3ddd232 100644
--- a/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAWebExceptionHandler.java
+++ b/sra/src/main/java/org/apache/syncope/sra/SyncopeSRAWebExceptionHandler.java
@@ -30,7 +30,6 @@ import org.apache.syncope.common.lib.to.SRARouteTO;
import org.apache.syncope.common.rest.api.RESTHeaders;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.event.RefreshRoutesEvent;
import org.springframework.cloud.gateway.support.NotFoundException;
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
@@ -42,12 +41,10 @@ import org.springframework.http.InvalidMediaTypeException;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.security.oauth2.core.OAuth2AuthorizationException;
-import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebExceptionHandler;
import reactor.core.publisher.Mono;
-@Component
@Order(-2)
public class SyncopeSRAWebExceptionHandler implements WebExceptionHandler, ApplicationListener<RefreshRoutesEvent> {
@@ -55,11 +52,14 @@ public class SyncopeSRAWebExceptionHandler implements WebExceptionHandler, Appli
private static final Map<String, Optional<URI>> CACHE = new ConcurrentHashMap<>();
- @Autowired
- private RouteProvider routeProvider;
+ private final RouteProvider routeProvider;
- @Autowired
- private SRAProperties props;
+ private final SRAProperties props;
+
+ public SyncopeSRAWebExceptionHandler(final RouteProvider routeProvider, final SRAProperties props) {
+ this.routeProvider = routeProvider;
+ this.props = props;
+ }
@Override
public void onApplicationEvent(final RefreshRoutesEvent event) {
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/CsrfRouteMatcher.java b/sra/src/main/java/org/apache/syncope/sra/security/CsrfRouteMatcher.java
index d15a7e9..9dc6f50 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/CsrfRouteMatcher.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/CsrfRouteMatcher.java
@@ -21,15 +21,12 @@ package org.apache.syncope.sra.security;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.syncope.common.lib.to.SRARouteTO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpRequest;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;
-@Component
public class CsrfRouteMatcher extends AbstractRouteMatcher {
private static final String CACHE_NAME = CsrfRouteMatcher.class.getName();
@@ -41,8 +38,11 @@ public class CsrfRouteMatcher extends AbstractRouteMatcher {
CACHE.put(CACHE_NAME, new ConcurrentHashMap<>());
}
- @Autowired
- private PublicRouteMatcher publicRouteMatcher;
+ private final PublicRouteMatcher publicRouteMatcher;
+
+ public CsrfRouteMatcher(final PublicRouteMatcher publicRouteMatcher) {
+ this.publicRouteMatcher = publicRouteMatcher;
+ }
@Override
protected String getCacheName() {
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/LogoutRouteMatcher.java b/sra/src/main/java/org/apache/syncope/sra/security/LogoutRouteMatcher.java
index aeff3dc..a3be13e 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/LogoutRouteMatcher.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/LogoutRouteMatcher.java
@@ -21,9 +21,7 @@ package org.apache.syncope.sra.security;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.syncope.common.lib.to.SRARouteTO;
import org.springframework.cloud.gateway.route.Route;
-import org.springframework.stereotype.Component;
-@Component
public class LogoutRouteMatcher extends AbstractRouteMatcher {
private static final String CACHE_NAME = LogoutRouteMatcher.class.getName();
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/PublicRouteMatcher.java b/sra/src/main/java/org/apache/syncope/sra/security/PublicRouteMatcher.java
index 7e5e10e..3687040 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/PublicRouteMatcher.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/PublicRouteMatcher.java
@@ -21,9 +21,7 @@ package org.apache.syncope.sra.security;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.syncope.common.lib.types.SRARouteType;
import org.springframework.cloud.gateway.route.Route;
-import org.springframework.stereotype.Component;
-@Component
public class PublicRouteMatcher extends AbstractRouteMatcher {
private static final String CACHE_NAME = PublicRouteMatcher.class.getName();
diff --git a/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java b/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java
index 175ebd6..290fe4e 100644
--- a/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java
+++ b/sra/src/main/java/org/apache/syncope/sra/security/oauth2/OidcClientInitiatedServerLogoutSuccessHandler.java
@@ -20,8 +20,9 @@ package org.apache.syncope.sra.security.oauth2;
import java.net.URI;
import java.nio.charset.StandardCharsets;
-import javax.annotation.Resource;
import org.apache.syncope.sra.security.AbstractServerLogoutSuccessHandler;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import reactor.core.publisher.Mono;
import org.springframework.security.core.Authentication;
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
@@ -41,7 +42,8 @@ import org.springframework.web.util.UriComponentsBuilder;
*/
public class OidcClientInitiatedServerLogoutSuccessHandler extends AbstractServerLogoutSuccessHandler {
- @Resource(name = "oidcClientRegistrationRepository")
+ @Autowired
+ @Qualifier("oidcClientRegistrationRepository")
private ReactiveClientRegistrationRepository clientRegistrationRepository;
protected final RedirectServerLogoutSuccessHandler serverLogoutSuccessHandler =
diff --git a/sra/src/main/resources/sra.properties b/sra/src/main/resources/sra.properties
index b61eeb4..551efc7 100644
--- a/sra/src/main/resources/sra.properties
+++ b/sra/src/main/resources/sra.properties
@@ -36,3 +36,8 @@ sra.useGZIPCompression=true
sra.global.error=/error
sra.global.postLogout=/logout
+
+##
+# Disable CGLib Proxies
+spring.aop.auto=true
+spring.aop.proxy-target-class=false
diff --git a/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/SyncopeWABootstrapConfiguration.java b/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/SyncopeWABootstrapConfiguration.java
index d167e80..45a3b72 100644
--- a/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/SyncopeWABootstrapConfiguration.java
+++ b/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/SyncopeWABootstrapConfiguration.java
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.wa.bootstrap;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.bootstrap.config.PropertySourceLocator;
import org.springframework.context.annotation.Bean;
@@ -49,7 +48,6 @@ public class SyncopeWABootstrapConfiguration {
@Configuration(proxyBeanMethods = false)
public static class PropertySourceConfiguration {
- @Autowired
@Bean
public PropertySourceLocator configPropertySourceLocator(final WARestClient waRestClient) {
return new SyncopeWAPropertySourceLocator(waRestClient);
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java
index 6e83d8f..3c62039 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/SyncopeWAApplication.java
@@ -34,7 +34,6 @@ import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
@@ -74,9 +73,9 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
RedisRepositoriesAutoConfiguration.class
})
@EnableConfigurationProperties({ WAProperties.class, CasConfigurationProperties.class })
-@EnableAsync
-@EnableAspectJAutoProxy(proxyTargetClass = true)
-@EnableTransactionManagement(proxyTargetClass = true)
+@EnableAsync(proxyTargetClass = false)
+@EnableAspectJAutoProxy(proxyTargetClass = false)
+@EnableTransactionManagement(proxyTargetClass = false)
@EnableScheduling
public class SyncopeWAApplication extends SpringBootServletInitializer {
@@ -88,12 +87,6 @@ public class SyncopeWAApplication extends SpringBootServletInitializer {
build().run(args);
}
- @Autowired
- protected WAProperties waProperties;
-
- @Autowired
- protected SchedulerFactoryBean scheduler;
-
@Override
protected SpringApplicationBuilder configure(final SpringApplicationBuilder builder) {
return builder.properties(Map.of("spring.config.name", "wa",
@@ -108,10 +101,13 @@ public class SyncopeWAApplication extends SpringBootServletInitializer {
@EventListener
public void handleApplicationReadyEvent(final ApplicationReadyEvent event) {
new CasConfigurationPropertiesValidator(event.getApplicationContext()).validate();
- scheduleJobToRefreshContext();
+ final WAProperties waProperties = event.getApplicationContext().getBean(WAProperties.class);
+ final SchedulerFactoryBean scheduler = event.getApplicationContext().getBean(SchedulerFactoryBean.class);
+ scheduleJobToRefreshContext(waProperties, scheduler);
}
- protected void scheduleJobToRefreshContext() {
+ protected void scheduleJobToRefreshContext(final WAProperties waProperties,
+ final SchedulerFactoryBean scheduler) {
try {
Date date = Date.from(LocalDateTime.now().plusSeconds(waProperties.getContextRefreshDelay()).
atZone(ZoneId.systemDefault()).toInstant());
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/actuate/SyncopeWAInfoContributor.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/actuate/SyncopeWAInfoContributor.java
index ca78683..21625d9 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/actuate/SyncopeWAInfoContributor.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/actuate/SyncopeWAInfoContributor.java
@@ -19,15 +19,17 @@
package org.apache.syncope.wa.starter.actuate;
import org.apache.syncope.wa.bootstrap.WAProperties;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.security.access.prepost.PreAuthorize;
public class SyncopeWAInfoContributor implements InfoContributor {
- @Autowired
- protected WAProperties waProperties;
+ protected final WAProperties waProperties;
+
+ public SyncopeWAInfoContributor(final WAProperties waProperties) {
+ this.waProperties = waProperties;
+ }
@PreAuthorize("isAuthenticated()")
@Override
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWAConfiguration.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWAConfiguration.java
index 6aff8a3..2891671 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWAConfiguration.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWAConfiguration.java
@@ -38,6 +38,7 @@ import org.apache.syncope.common.keymaster.client.api.model.NetworkService;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStart;
import org.apache.syncope.common.keymaster.client.api.startstop.KeymasterStop;
import org.apache.syncope.common.lib.types.JWSAlgorithm;
+import org.apache.syncope.wa.bootstrap.WAProperties;
import org.apache.syncope.wa.bootstrap.WARestClient;
import org.apache.syncope.wa.starter.actuate.SyncopeCoreHealthIndicator;
import org.apache.syncope.wa.starter.actuate.SyncopeWAInfoContributor;
@@ -78,7 +79,6 @@ import org.apereo.cas.otp.repository.credentials.OneTimeTokenCredentialRepositor
import org.apereo.cas.otp.repository.token.OneTimeTokenRepository;
import org.apereo.cas.services.ServiceRegistryExecutionPlanConfigurer;
import org.apereo.cas.services.ServiceRegistryListener;
-import org.apereo.cas.services.web.CasThymeleafLoginFormDirector;
import org.apereo.cas.support.events.CasEventRepository;
import org.apereo.cas.support.events.CasEventRepositoryFilter;
import org.apereo.cas.support.pac4j.authentication.DelegatedClientFactoryCustomizer;
@@ -87,19 +87,16 @@ import org.apereo.cas.support.saml.idp.metadata.generator.SamlIdPMetadataGenerat
import org.apereo.cas.support.saml.idp.metadata.locator.SamlIdPMetadataLocator;
import org.apereo.cas.util.DateTimeUtils;
import org.apereo.cas.util.crypto.CipherExecutor;
-import org.apereo.cas.web.flow.CasWebflowExecutionPlan;
import org.apereo.cas.webauthn.storage.WebAuthnCredentialRepository;
import org.pac4j.core.client.Client;
import org.springframework.beans.factory.ObjectProvider;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-@Configuration(value = "SyncopeWAConfiguration", proxyBeanMethods = false)
+@Configuration(proxyBeanMethods = false)
public class SyncopeWAConfiguration {
private static String version(final ConfigurableApplicationContext ctx) {
@@ -202,7 +199,6 @@ public class SyncopeWAConfiguration {
clientAppTOMappers);
}
- @Autowired
@Bean
public ServiceRegistryExecutionPlanConfigurer syncopeServiceRegistryConfigurer(
final ConfigurableApplicationContext ctx,
@@ -217,7 +213,6 @@ public class SyncopeWAConfiguration {
return plan -> plan.registerServiceRegistry(registry);
}
- @Autowired
@Bean
public SamlIdPMetadataGenerator samlIdPMetadataGenerator(
final WARestClient restClient,
@@ -226,7 +221,6 @@ public class SyncopeWAConfiguration {
return new RestfulSamlIdPMetadataGenerator(context, restClient);
}
- @Autowired
@Bean
public SamlIdPMetadataLocator samlIdPMetadataLocator(final WARestClient restClient) {
return new RestfulSamlIdPMetadataLocator(
@@ -235,7 +229,6 @@ public class SyncopeWAConfiguration {
restClient);
}
- @Autowired
@Bean
public AuditTrailExecutionPlanConfigurer auditConfigurer(final WARestClient restClient) {
return plan -> plan.registerAuditTrailManager(new SyncopeWAAuditTrailManager(restClient));
@@ -247,7 +240,6 @@ public class SyncopeWAConfiguration {
return CasEventRepositoryFilter.noOp();
}
- @Autowired
@Bean
public CasEventRepository casEventRepository(final WARestClient restClient,
@Qualifier("syncopeWAEventRepositoryFilter")
@@ -255,7 +247,6 @@ public class SyncopeWAConfiguration {
return new SyncopeWAEventRepository(syncopeWAEventRepositoryFilter, restClient);
}
- @Autowired
@Bean
public DelegatedClientFactoryCustomizer<Client> delegatedClientCustomizer(final WARestClient restClient) {
return new SyncopeWASAML2ClientCustomizer(restClient);
@@ -269,7 +260,6 @@ public class SyncopeWAConfiguration {
restClient, casProperties.getAuthn().getMfa().getGauth().getCore().getTimeStepSize());
}
- @Autowired
@Bean
public OneTimeTokenCredentialRepository googleAuthenticatorAccountRegistry(
final IGoogleAuthenticator googleAuthenticatorInstance, final WARestClient restClient) {
@@ -277,7 +267,6 @@ public class SyncopeWAConfiguration {
return new SyncopeWAGoogleMfaAuthCredentialRepository(restClient, googleAuthenticatorInstance);
}
- @Autowired
@Bean
public OidcJsonWebKeystoreGeneratorService oidcJsonWebKeystoreGeneratorService(
final ConfigurableApplicationContext ctx,
@@ -289,7 +278,6 @@ public class SyncopeWAConfiguration {
return new SyncopeWAOIDCJWKSGeneratorService(restClient, size, algorithm);
}
- @RefreshScope
@Bean
public WebAuthnCredentialRepository webAuthnCredentialRepository(
final CasConfigurationProperties casProperties,
@@ -298,7 +286,6 @@ public class SyncopeWAConfiguration {
}
@Bean
- @RefreshScope
public U2FDeviceRepository u2fDeviceRepository(
final CasConfigurationProperties casProperties,
final WARestClient restClient) {
@@ -313,22 +300,20 @@ public class SyncopeWAConfiguration {
}
@Bean
- @Autowired
public SurrogateAuthenticationService surrogateAuthenticationService(final WARestClient restClient) {
return new SyncopeWASurrogateAuthenticationService(restClient);
}
@ConditionalOnMissingBean
@Bean
- @Autowired
public SyncopeCoreHealthIndicator syncopeCoreHealthIndicator(final WARestClient restClient) {
return new SyncopeCoreHealthIndicator(restClient);
}
@ConditionalOnMissingBean
@Bean
- public SyncopeWAInfoContributor syncopeWAInfoContributor() {
- return new SyncopeWAInfoContributor();
+ public SyncopeWAInfoContributor syncopeWAInfoContributor(final WAProperties waProperties) {
+ return new SyncopeWAInfoContributor(waProperties);
}
@Bean
@@ -340,10 +325,4 @@ public class SyncopeWAConfiguration {
public KeymasterStop keymasterStop() {
return new KeymasterStop(NetworkService.Type.WA);
}
-
- @Bean
- public CasThymeleafLoginFormDirector casThymeleafLoginFormDirector(
- @Qualifier("casWebflowExecutionPlan") final CasWebflowExecutionPlan webflowExecutionPlan) {
- return new CasThymeleafLoginFormDirector(webflowExecutionPlan);
- }
}
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWARefreshContextJob.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWARefreshContextJob.java
index 348d3f8..d7aee55 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWARefreshContextJob.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/config/SyncopeWARefreshContextJob.java
@@ -62,7 +62,7 @@ public class SyncopeWARefreshContextJob implements Job {
LOG.info("Generated SAML2 IdP metadata for {}", document.getAppliesTo());
advertiseReady();
- } catch (Exception e) {
+ } catch (final Exception e) {
throw new JobExecutionException("While generating SAML2 IdP metadata", e);
}
}
diff --git a/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java b/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java
index a89068a..1b2bbbc 100644
--- a/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java
+++ b/wa/starter/src/main/java/org/apache/syncope/wa/starter/saml/idp/metadata/RestfulSamlIdPMetadataGenerator.java
@@ -50,7 +50,7 @@ public class RestfulSamlIdPMetadataGenerator extends BaseSamlIdPMetadataGenerato
@Override
protected SamlIdPMetadataDocument finalizeMetadataDocument(
final SamlIdPMetadataDocument doc,
- final Optional<SamlRegisteredService> registeredService) {
+ final Optional<SamlRegisteredService> registeredService) throws Exception {
LOG.info("Generating new SAML2 IdP metadata document");
@@ -84,14 +84,14 @@ public class RestfulSamlIdPMetadataGenerator extends BaseSamlIdPMetadataGenerato
@Override
public Pair<String, String> buildSelfSignedEncryptionCert(final Optional<SamlRegisteredService> registeredService)
- throws Exception {
+ throws Exception {
return generateCertificateAndKey();
}
@Override
public Pair<String, String> buildSelfSignedSigningCert(final Optional<SamlRegisteredService> registeredService)
- throws Exception {
+ throws Exception {
return generateCertificateAndKey();
}
diff --git a/wa/starter/src/main/resources/wa.properties b/wa/starter/src/main/resources/wa.properties
index 281f148..8ae2d17 100644
--- a/wa/starter/src/main/resources/wa.properties
+++ b/wa/starter/src/main/resources/wa.properties
@@ -110,3 +110,8 @@ cas.authn.syncope.name=DefaultSyncopeAuthModule
# Default strategy for matching request paths against
# registered Spring MVC handler mappings
spring.mvc.pathmatch.matching-strategy=ant-path-matcher
+
+##
+# Disable CGLib Proxies
+spring.aop.auto=true
+spring.aop.proxy-target-class=false