From 5cc246e26c96916755b609611dcf9138ee450be8 Mon Sep 17 00:00:00 2001 From: Patrick Hobusch Date: Sun, 20 Jul 2025 02:23:05 +0200 Subject: [PATCH 1/3] WIP_BUILDERS --- .../model/AbstractAuthenticationIdpModel.java | 4 +- .../model/AuthenticationIdpOidcModel.java | 39 +++++++------- .../model/AuthenticationIdpSamlModel.java | 27 +++++----- .../commons/model/AuthenticationSsoModel.java | 17 +++--- .../util/AuthenticationIdpModelUtil.java | 52 +++++++++--------- .../util/AuthenticationSsoModelUtil.java | 9 ++-- .../service/AuthenticationServiceTest.java | 7 +-- .../crowd/model/SessionConfigModel.java | 24 ++++----- .../service/SessionConfigServiceImpl.java | 10 ++-- .../util/AuthenticationIdpModelUtil.java | 54 +++++++++---------- .../util/AuthenticationSsoModelUtil.java | 11 ++-- .../service/AuthenticationServiceTest.java | 7 +-- 12 files changed, 121 insertions(+), 140 deletions(-) diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java index 0afa78e9..974e4596 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -14,7 +14,7 @@ @Data -@NoArgsConstructor +@SuperBuilder @XmlRootElement @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java index fb574d22..8311c00d 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java @@ -3,7 +3,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -11,7 +11,7 @@ import java.util.List; @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.AUTHENTICATION + "-" + BootstrAPI.AUTHENTICATION_IDP + "-" + BootstrAPI.AUTHENTICATION_IDP_OIDC) public class AuthenticationIdpOidcModel extends AbstractAuthenticationIdpModel { @@ -44,24 +44,21 @@ public class AuthenticationIdpOidcModel extends AbstractAuthenticationIdpModel { // Example instances for documentation and tests - public static final AuthenticationIdpOidcModel EXAMPLE_1; - - static { - EXAMPLE_1 = new AuthenticationIdpOidcModel(); - EXAMPLE_1.setId(1L); - EXAMPLE_1.setName("OIDC"); - EXAMPLE_1.setEnabled(true); - EXAMPLE_1.setUrl("https://oidc.example.com"); - EXAMPLE_1.setEnableRememberMe(true); - EXAMPLE_1.setButtonText("Login with OIDC"); - EXAMPLE_1.setClientId("oidc"); - EXAMPLE_1.setClientSecret("s3cr3t"); - EXAMPLE_1.setUsernameClaim("userName"); - EXAMPLE_1.setAdditionalScopes(Collections.emptyList()); - EXAMPLE_1.setDiscoveryEnabled(false); - EXAMPLE_1.setAuthorizationEndpoint("https://oidc.example.com/authorization"); - EXAMPLE_1.setTokenEndpoint("https://oidc.example.com/token"); - EXAMPLE_1.setUserInfoEndpoint("https://oidc.example.com/userinfo"); - } + public static final AuthenticationIdpOidcModel EXAMPLE_1 = AuthenticationIdpOidcModel.builder() + .id(1L) + .name("OIDC") + .enabled(true) + .url("https://oidc.example.com") + .enableRememberMe(true) + .buttonText("Login with OIDC") + .clientId("oidc") + .clientSecret("s3cr3t") + .usernameClaim("userName") + .additionalScopes(Collections.emptyList()) + .discoveryEnabled(false) + .authorizationEndpoint("https://oidc.example.com/authorization") + .tokenEndpoint("https://oidc.example.com/token") + .userInfoEndpoint("https://oidc.example.com/userinfo") + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java index 8e997bfa..bd9f00b5 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java @@ -3,13 +3,13 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.AUTHENTICATION + "-" + BootstrAPI.AUTHENTICATION_IDP + "-" + BootstrAPI.AUTHENTICATION_IDP_SAML) public class AuthenticationIdpSamlModel extends AbstractAuthenticationIdpModel { @@ -24,18 +24,15 @@ public class AuthenticationIdpSamlModel extends AbstractAuthenticationIdpModel { // Example instances for documentation and tests - public static final AuthenticationIdpSamlModel EXAMPLE_1; - - static { - EXAMPLE_1 = new AuthenticationIdpSamlModel(); - EXAMPLE_1.setId(1L); - EXAMPLE_1.setName("SAML"); - EXAMPLE_1.setEnabled(true); - EXAMPLE_1.setUrl("https://saml.example.com"); - EXAMPLE_1.setEnableRememberMe(true); - EXAMPLE_1.setButtonText("Login with SAML"); - EXAMPLE_1.setCertificate("certificate"); - EXAMPLE_1.setUsernameAttribute("username"); - } + public static final AuthenticationIdpSamlModel EXAMPLE_1 = AuthenticationIdpSamlModel.builder() + .id(1L) + .name("SAML") + .enabled(true) + .url("https://saml.example.com") + .enableRememberMe(true) + .buttonText("Login with SAML") + .certificate("certificate") + .usernameAttribute("username") + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java index a70d2874..98aaf889 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java @@ -1,14 +1,14 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.AUTHENTICATION + "-" + BootstrAPI.AUTHENTICATION_SSO) public class AuthenticationSsoModel { @@ -23,13 +23,10 @@ public class AuthenticationSsoModel { // Example instances for documentation and tests - public static final AuthenticationSsoModel EXAMPLE_1; - - static { - EXAMPLE_1 = new AuthenticationSsoModel(); - EXAMPLE_1.setShowOnLogin(true); - EXAMPLE_1.setShowOnLoginForJsm(true); - EXAMPLE_1.setEnableAuthenticationFallback(true); - } + public static final AuthenticationSsoModel EXAMPLE_1 = AuthenticationSsoModel.builder() + .showOnLogin(true) + .showOnLoginForJsm(true) + .enableAuthenticationFallback(true) + .build(); } diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationIdpModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationIdpModelUtil.java index 983a2243..374e9674 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationIdpModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationIdpModelUtil.java @@ -109,22 +109,21 @@ private static AuthenticationIdpOidcModel toAuthenticationIdpOidcModel( final OidcConfig oidcConfig = (OidcConfig) idpConfig; - final AuthenticationIdpOidcModel authenticationIdpOidcModel = new AuthenticationIdpOidcModel(); - authenticationIdpOidcModel.setId(oidcConfig.getId()); - authenticationIdpOidcModel.setName(oidcConfig.getName()); - authenticationIdpOidcModel.setEnabled(oidcConfig.isEnabled()); - authenticationIdpOidcModel.setUrl(oidcConfig.getIssuer()); - authenticationIdpOidcModel.setEnableRememberMe(oidcConfig.isEnableRememberMe()); - authenticationIdpOidcModel.setButtonText(oidcConfig.getButtonText()); - authenticationIdpOidcModel.setClientId(oidcConfig.getClientId()); - authenticationIdpOidcModel.setUsernameClaim(oidcConfig.getUsernameClaim()); - authenticationIdpOidcModel.setAdditionalScopes(oidcConfig.getAdditionalScopes()); - authenticationIdpOidcModel.setDiscoveryEnabled(oidcConfig.isDiscoveryEnabled()); - authenticationIdpOidcModel.setAuthorizationEndpoint(oidcConfig.getAuthorizationEndpoint()); - authenticationIdpOidcModel.setTokenEndpoint(oidcConfig.getTokenEndpoint()); - authenticationIdpOidcModel.setUserInfoEndpoint(oidcConfig.getUserInfoEndpoint()); - - return authenticationIdpOidcModel; + return AuthenticationIdpOidcModel.builder() + .id(oidcConfig.getId()) + .name(oidcConfig.getName()) + .enabled(oidcConfig.isEnabled()) + .url(oidcConfig.getIssuer()) + .enableRememberMe(oidcConfig.isEnableRememberMe()) + .buttonText(oidcConfig.getButtonText()) + .clientId(oidcConfig.getClientId()) + .usernameClaim(oidcConfig.getUsernameClaim()) + .additionalScopes(oidcConfig.getAdditionalScopes()) + .discoveryEnabled(oidcConfig.isDiscoveryEnabled()) + .authorizationEndpoint(oidcConfig.getAuthorizationEndpoint()) + .tokenEndpoint(oidcConfig.getTokenEndpoint()) + .userInfoEndpoint(oidcConfig.getUserInfoEndpoint()) + .build(); } private static AuthenticationIdpSamlModel toAuthenticationIdpSamlModel( @@ -136,17 +135,16 @@ private static AuthenticationIdpSamlModel toAuthenticationIdpSamlModel( final SamlConfig samlConfig = (SamlConfig) idpConfig; - final AuthenticationIdpSamlModel authenticationIdpSamlModel = new AuthenticationIdpSamlModel(); - authenticationIdpSamlModel.setId(samlConfig.getId()); - authenticationIdpSamlModel.setName(samlConfig.getName()); - authenticationIdpSamlModel.setEnabled(samlConfig.isEnabled()); - authenticationIdpSamlModel.setUrl(samlConfig.getIssuer()); - authenticationIdpSamlModel.setEnableRememberMe(samlConfig.isEnableRememberMe()); - authenticationIdpSamlModel.setButtonText(samlConfig.getButtonText()); - // is it wanted to return the certificate here? - authenticationIdpSamlModel.setUsernameAttribute(samlConfig.getUsernameAttribute()); - - return authenticationIdpSamlModel; + return AuthenticationIdpSamlModel.builder() + .id(samlConfig.getId()) + .name(samlConfig.getName()) + .enabled(samlConfig.isEnabled()) + .url(samlConfig.getIssuer()) + .enableRememberMe(samlConfig.isEnableRememberMe()) + .buttonText(samlConfig.getButtonText()) + // is it wanted to return the certificate here? + .usernameAttribute(samlConfig.getUsernameAttribute()) + .build(); } private static void verifyIdAndType( diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationSsoModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationSsoModelUtil.java index 4742cc18..34b56615 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationSsoModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/AuthenticationSsoModelUtil.java @@ -38,11 +38,10 @@ public static SsoConfig toSsoConfig( public static AuthenticationSsoModel toAuthenticationSsoModel( final SsoConfig ssoConfig) { - final AuthenticationSsoModel authenticationSsoModel = new AuthenticationSsoModel(); - authenticationSsoModel.setShowOnLogin(ssoConfig.getShowLoginForm()); - authenticationSsoModel.setEnableAuthenticationFallback(ssoConfig.enableAuthenticationFallback()); - - return authenticationSsoModel; + return AuthenticationSsoModel.builder() + .showOnLogin(ssoConfig.getShowLoginForm()) + .enableAuthenticationFallback(ssoConfig.enableAuthenticationFallback()) + .build(); } private AuthenticationSsoModelUtil() { diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/AuthenticationServiceTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/AuthenticationServiceTest.java index ea0b38f2..891ce7b7 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/AuthenticationServiceTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/AuthenticationServiceTest.java @@ -81,7 +81,7 @@ void testSetAuthenticationIdpsWithUpdate() { @Test void testSetAuthenticationIdpsNameNull() { - final AuthenticationIdpOidcModel authenticationIdpOidcModel = new AuthenticationIdpOidcModel(); + final AuthenticationIdpOidcModel authenticationIdpOidcModel = AuthenticationIdpOidcModel.builder().build(); final List authenticationIdpModels = Collections.singletonList(authenticationIdpOidcModel); assertThrows(BadRequestException.class, () -> { @@ -91,8 +91,9 @@ void testSetAuthenticationIdpsNameNull() { @Test void testSetAuthenticationIdpsNameEmpty() { - final AuthenticationIdpOidcModel authenticationIdpOidcModel = new AuthenticationIdpOidcModel(); - authenticationIdpOidcModel.setName(""); + final AuthenticationIdpOidcModel authenticationIdpOidcModel = AuthenticationIdpOidcModel.builder() + .name("") + .build(); final List authenticationIdpModels = Collections.singletonList(authenticationIdpOidcModel); assertThrows(BadRequestException.class, () -> { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java index e69d9dd7..ffa77eb5 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java @@ -1,14 +1,14 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.crowd.rest.api.SessionConfigResource; +import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = SessionConfigResource.SESSION_CONFIG) public class SessionConfigModel { @@ -18,18 +18,14 @@ public class SessionConfigModel { @XmlElement private Boolean requireConsistentClientIP; - public static final SessionConfigModel EXAMPLE_1; - public static final SessionConfigModel EXAMPLE_2; + public static final SessionConfigModel EXAMPLE_1 = SessionConfigModel.builder() + .sessionTimeoutInMinutes(20L) + .requireConsistentClientIP(false) + .build(); - static { - EXAMPLE_1 = new SessionConfigModel(); - EXAMPLE_1.setSessionTimeoutInMinutes(20L); - EXAMPLE_1.setRequireConsistentClientIP(false); - } + public static final SessionConfigModel EXAMPLE_2 = SessionConfigModel.builder() + .sessionTimeoutInMinutes(30L) + .requireConsistentClientIP(true) + .build(); - static { - EXAMPLE_2 = new SessionConfigModel(); - EXAMPLE_2.setSessionTimeoutInMinutes(30L); - EXAMPLE_2.setRequireConsistentClientIP(true); - } } diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SessionConfigServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SessionConfigServiceImpl.java index 7adeb63c..bbebbdd6 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SessionConfigServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SessionConfigServiceImpl.java @@ -16,11 +16,10 @@ public SessionConfigServiceImpl( @Override public SessionConfigModel getSessionConfig() { - final SessionConfigModel sessionConfigModel = new SessionConfigModel(); - sessionConfigModel.setSessionTimeoutInMinutes(propertyManager.getSessionTime()); - sessionConfigModel.setRequireConsistentClientIP(propertyManager.isIncludeIpAddressInValidationFactors()); - - return sessionConfigModel; + return SessionConfigModel.builder() + .sessionTimeoutInMinutes(propertyManager.getSessionTime()) + .requireConsistentClientIP(propertyManager.isIncludeIpAddressInValidationFactors()) + .build(); } @Override @@ -37,4 +36,5 @@ public SessionConfigModel setSessionConfig( return getSessionConfig(); } + } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationIdpModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationIdpModelUtil.java index 2227ac9d..489adac4 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationIdpModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationIdpModelUtil.java @@ -112,23 +112,21 @@ private static AuthenticationIdpOidcModel toAuthenticationIdpOidcModel( final OidcConfig oidcConfig = (OidcConfig) idpConfig; - final AuthenticationIdpOidcModel authenticationIdpOidcModel = new AuthenticationIdpOidcModel(); - authenticationIdpOidcModel.setId(oidcConfig.getId()); - authenticationIdpOidcModel.setName(oidcConfig.getName()); - authenticationIdpOidcModel.setEnabled(oidcConfig.isEnabled()); - authenticationIdpOidcModel.setEnabledForJsm(oidcConfig.isIncludeCustomerLogins()); - authenticationIdpOidcModel.setUrl(oidcConfig.getIssuer()); - authenticationIdpOidcModel.setEnableRememberMe(oidcConfig.isEnableRememberMe()); - authenticationIdpOidcModel.setButtonText(oidcConfig.getButtonText()); - authenticationIdpOidcModel.setClientId(oidcConfig.getClientId()); - authenticationIdpOidcModel.setUsernameClaim(oidcConfig.getUsernameClaim()); - authenticationIdpOidcModel.setAdditionalScopes(oidcConfig.getAdditionalScopes()); - authenticationIdpOidcModel.setDiscoveryEnabled(oidcConfig.isDiscoveryEnabled()); - authenticationIdpOidcModel.setAuthorizationEndpoint(oidcConfig.getAuthorizationEndpoint()); - authenticationIdpOidcModel.setTokenEndpoint(oidcConfig.getTokenEndpoint()); - authenticationIdpOidcModel.setUserInfoEndpoint(oidcConfig.getUserInfoEndpoint()); - - return authenticationIdpOidcModel; + return AuthenticationIdpOidcModel.builder() + .id(oidcConfig.getId()) + .name(oidcConfig.getName()) + .enabled(oidcConfig.isEnabled()) + .url(oidcConfig.getIssuer()) + .enableRememberMe(oidcConfig.isEnableRememberMe()) + .buttonText(oidcConfig.getButtonText()) + .clientId(oidcConfig.getClientId()) + .usernameClaim(oidcConfig.getUsernameClaim()) + .additionalScopes(oidcConfig.getAdditionalScopes()) + .discoveryEnabled(oidcConfig.isDiscoveryEnabled()) + .authorizationEndpoint(oidcConfig.getAuthorizationEndpoint()) + .tokenEndpoint(oidcConfig.getTokenEndpoint()) + .userInfoEndpoint(oidcConfig.getUserInfoEndpoint()) + .build(); } private static AuthenticationIdpSamlModel toAuthenticationIdpSamlModel( @@ -140,18 +138,16 @@ private static AuthenticationIdpSamlModel toAuthenticationIdpSamlModel( final SamlConfig samlConfig = (SamlConfig) idpConfig; - final AuthenticationIdpSamlModel authenticationIdpSamlModel = new AuthenticationIdpSamlModel(); - authenticationIdpSamlModel.setId(samlConfig.getId()); - authenticationIdpSamlModel.setName(samlConfig.getName()); - authenticationIdpSamlModel.setEnabled(samlConfig.isEnabled()); - authenticationIdpSamlModel.setEnabledForJsm(samlConfig.isIncludeCustomerLogins()); - authenticationIdpSamlModel.setUrl(samlConfig.getIssuer()); - authenticationIdpSamlModel.setEnableRememberMe(samlConfig.isEnableRememberMe()); - authenticationIdpSamlModel.setButtonText(samlConfig.getButtonText()); - // is it wanted to return the certificate here? - authenticationIdpSamlModel.setUsernameAttribute(samlConfig.getUsernameAttribute()); - - return authenticationIdpSamlModel; + return AuthenticationIdpSamlModel.builder() + .id(samlConfig.getId()) + .name(samlConfig.getName()) + .enabled(samlConfig.isEnabled()) + .url(samlConfig.getIssuer()) + .enableRememberMe(samlConfig.isEnableRememberMe()) + .buttonText(samlConfig.getButtonText()) + // is it wanted to return the certificate here? + .usernameAttribute(samlConfig.getUsernameAttribute()) + .build(); } private static void verifyIdAndType( diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationSsoModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationSsoModelUtil.java index d93faecf..26bd240a 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationSsoModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/AuthenticationSsoModelUtil.java @@ -42,12 +42,11 @@ public static SsoConfig toSsoConfig( public static AuthenticationSsoModel toAuthenticationSsoModel( final SsoConfig ssoConfig) { - final AuthenticationSsoModel authenticationSsoModel = new AuthenticationSsoModel(); - authenticationSsoModel.setShowOnLogin(ssoConfig.getShowLoginForm()); - authenticationSsoModel.setShowOnLoginForJsm(ssoConfig.getShowLoginFormForJsm()); - authenticationSsoModel.setEnableAuthenticationFallback(ssoConfig.enableAuthenticationFallback()); - - return authenticationSsoModel; + return AuthenticationSsoModel.builder() + .showOnLogin(ssoConfig.getShowLoginForm()) + .showOnLoginForJsm(ssoConfig.getShowLoginFormForJsm()) + .enableAuthenticationFallback(ssoConfig.enableAuthenticationFallback()) + .build(); } private AuthenticationSsoModelUtil() { diff --git a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/AuthenticationServiceTest.java b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/AuthenticationServiceTest.java index 24469869..f848d91a 100644 --- a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/AuthenticationServiceTest.java +++ b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/AuthenticationServiceTest.java @@ -81,7 +81,7 @@ void testSetAuthenticationIdpsWithUpdate() { @Test void testSetAuthenticationIdpsNameNull() { - final AuthenticationIdpOidcModel authenticationIdpOidcModel = new AuthenticationIdpOidcModel(); + final AuthenticationIdpOidcModel authenticationIdpOidcModel = AuthenticationIdpOidcModel.builder().build(); final List authenticationIdpModels = Collections.singletonList(authenticationIdpOidcModel); assertThrows(BadRequestException.class, () -> { @@ -91,8 +91,9 @@ void testSetAuthenticationIdpsNameNull() { @Test void testSetAuthenticationIdpsNameEmpty() { - final AuthenticationIdpOidcModel authenticationIdpOidcModel = new AuthenticationIdpOidcModel(); - authenticationIdpOidcModel.setName(""); + final AuthenticationIdpOidcModel authenticationIdpOidcModel = AuthenticationIdpOidcModel.builder() + .name("") + .build(); final List authenticationIdpModels = Collections.singletonList(authenticationIdpOidcModel); assertThrows(BadRequestException.class, () -> { From ddd831c25912e99f773ec5cc30926eea4bc51a2a Mon Sep 17 00:00:00 2001 From: Patrick Hobusch Date: Sun, 20 Jul 2025 03:53:55 +0200 Subject: [PATCH 2/3] WIP_BUILDERS --- .../commons/model/AbstractDirectoryModel.java | 4 +- .../AbstractMailServerProtocolModel.java | 4 +- .../commons/model/ApplicationLinkModel.java | 27 ++- .../commons/model/DirectoryCrowdModel.java | 92 ++++----- .../model/DirectoryDelegatingModel.java | 119 ++++++----- .../commons/model/DirectoryGenericModel.java | 4 +- .../commons/model/DirectoryInternalModel.java | 65 +++--- .../commons/model/DirectoryLdapModel.java | 11 +- .../bootstrapi/commons/model/GroupModel.java | 32 ++- .../commons/model/LicenseModel.java | 53 +++-- .../commons/model/MailServerPopModel.java | 26 ++- .../commons/model/MailServerSmtpModel.java | 69 +++---- .../commons/model/PermissionsGlobalModel.java | 4 +- .../SettingsBrandingColorSchemeModel.java | 48 +++-- .../commons/model/SettingsModel.java | 37 ++-- .../commons/model/SettingsSecurityModel.java | 4 - .../bootstrapi/commons/model/UserModel.java | 70 +++---- .../model/type/DirectoryPermissions.java | 4 +- .../model/util/ApplicationLinkModelUtil.java | 2 +- .../AbstractMailServerProtocolModelTest.java | 13 +- .../rest/AbstractLicenseResourceFuncTest.java | 4 +- .../SettingsBrandingColorSchemeModel.md | 1 - .../confluence/model/CacheModel.java | 4 +- .../model/PermissionAnonymousAccessModel.java | 16 +- .../model/SettingsCustomHtmlModel.java | 4 - .../confluence/model/util/CacheModelUtil.java | 17 +- .../model/util/DirectoryModelUtil.java | 48 ++--- .../model/util/LicenseModelUtil.java | 16 +- .../model/util/MailServerPopModelUtil.java | 18 +- .../model/util/MailServerSmtpModelUtil.java | 2 +- .../util/PermissionsGlobalModelUtil.java | 11 +- .../SettingsBrandingColorSchemeModelUtil.java | 41 ++-- .../confluence/model/util/UserModelUtil.java | 11 +- .../rest/api/SettingsCustomHtmlResource.java | 5 +- .../service/SettingsBrandingServiceImpl.java | 2 +- .../service/SettingsServiceImpl.java | 13 +- .../SettingsColourSchemeModelUtilTest.java | 2 +- .../service/DirectoryServiceTest.java | 4 +- .../service/MailServerServiceTest.java | 4 +- .../service/SettingsServiceTest.java | 8 +- .../confluence/service/UserServiceTest.java | 11 +- .../bootstrapi/crowd/model/AllModel.java | 6 +- .../crowd/model/ApplicationModel.java | 106 +++++----- .../crowd/model/MailTemplatesModel.java | 40 ++-- .../crowd/model/SessionConfigModel.java | 2 +- .../model/SettingsBrandingLoginPageModel.java | 36 ++-- .../model/util/ApplicationModelUtil.java | 34 ++- .../crowd/model/util/DirectoryModelUtil.java | 193 +++++++++--------- .../crowd/model/util/GroupModelUtil.java | 11 +- .../crowd/model/util/LicenseModelUtil.java | 17 +- .../model/util/MailServerSmtpModelUtil.java | 2 +- .../crowd/model/util/UserModelUtil.java | 17 +- .../crowd/rest/api/GroupResource.java | 1 - .../crowd/rest/api/GroupsResource.java | 1 - .../crowd/rest/api/MailTemplateResource.java | 2 +- .../crowd/rest/api/SessionConfigResource.java | 2 +- .../rest/api/TrustedProxiesResource.java | 2 +- .../crowd/service/DirectoriesServiceImpl.java | 1 - .../crowd/service/LicensesServiceImpl.java | 10 +- .../service/MailTemplatesServiceImpl.java | 16 +- .../service/SettingsBrandingServiceImpl.java | 5 +- .../crowd/service/SettingsServiceImpl.java | 2 +- .../bootstrapi/crowd/util/AttributeUtil.java | 1 - .../service/ApplicationsServiceTest.java | 4 +- .../CrowdSettingsBrandingServiceTest.java | 4 +- .../crowd/service/GroupsServiceTest.java | 21 +- .../crowd/service/MailServerServiceTest.java | 2 +- .../service/MailTemplatesServiceTest.java | 2 +- .../crowd/service/UsersServiceTest.java | 83 +++----- .../crowd/rest/SettingsResourceFuncTest.java | 2 +- .../jira/model/SettingsBannerModel.java | 6 +- .../jira/model/util/DirectoryModelUtil.java | 62 +++--- .../jira/model/util/LicenseModelUtil.java | 22 +- .../model/util/MailServerPopModelUtil.java | 17 +- .../model/util/MailServerSmtpModelUtil.java | 2 +- .../util/PermissionsGlobalModelUtil.java | 9 +- .../SettingsBrandingColorSchemeModelUtil.java | 31 ++- .../jira/service/DirectoryServiceImpl.java | 2 +- .../jira/service/SettingsServiceImpl.java | 20 +- .../model/util/DirectoryModelUtilTest.java | 5 +- .../jira/service/DirectoryServiceTest.java | 4 +- .../jira/service/JiraSettingsServiceTest.java | 21 +- .../jira/service/MailServerServiceTest.java | 2 +- .../jira/service/SettingsServiceTest.java | 21 +- 84 files changed, 821 insertions(+), 958 deletions(-) diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java index 62a9dceb..0f567294 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; @@ -16,7 +16,7 @@ * Model for user directory settings in REST requests. */ @Data -@NoArgsConstructor +@SuperBuilder @XmlRootElement @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java index f8469e88..c064a390 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java @@ -2,7 +2,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.EqualsExclude; import org.apache.commons.lang3.builder.HashCodeExclude; @@ -10,7 +10,7 @@ import javax.xml.bind.annotation.XmlElement; @Data -@NoArgsConstructor +@SuperBuilder(toBuilder = true) public abstract class AbstractMailServerProtocolModel { public static final Long DEFAULT_TIMEOUT = 10000L; diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java index c91435b0..5d52977b 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java @@ -2,7 +2,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; @@ -14,7 +14,7 @@ * Model for an application link in REST requests. */ @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.APPLICATION_LINK) public class ApplicationLinkModel { @@ -72,18 +72,15 @@ public enum ApplicationLinkStatus { // Example instances for documentation and tests - public static final ApplicationLinkModel EXAMPLE_1; - - static { - EXAMPLE_1 = new ApplicationLinkModel(); - EXAMPLE_1.setUuid(UUID.randomUUID()); - EXAMPLE_1.setName("Example"); - EXAMPLE_1.setDisplayUrl(URI.create("http://example.com")); - EXAMPLE_1.setRpcUrl(URI.create("http://rpc.example.com")); - EXAMPLE_1.setOutgoingAuthType(ApplicationLinkAuthType.OAUTH); - EXAMPLE_1.setIncomingAuthType(ApplicationLinkAuthType.OAUTH); - EXAMPLE_1.setPrimary(true); - EXAMPLE_1.setType(ApplicationLinkType.JIRA); - } + public static final ApplicationLinkModel EXAMPLE_1 = ApplicationLinkModel.builder() + .uuid(UUID.randomUUID()) + .name("Example") + .displayUrl(URI.create("http://example.com")) + .rpcUrl(URI.create("http://rpc.example.com")) + .outgoingAuthType(ApplicationLinkAuthType.OAUTH) + .incomingAuthType(ApplicationLinkAuthType.OAUTH) + .primary(true) + .type(ApplicationLinkType.JIRA) + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java index 30878d38..9da0340e 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java @@ -3,7 +3,8 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.Builder; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; @@ -14,7 +15,7 @@ * Model for user directory settings in REST requests. */ @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_CROWD) public class DirectoryCrowdModel extends AbstractDirectoryModel { @@ -29,7 +30,7 @@ public class DirectoryCrowdModel extends AbstractDirectoryModel { private DirectoryCrowdAdvanced advanced; @Data - @NoArgsConstructor + @Builder public static class DirectoryCrowdServer { @XmlElement @@ -54,7 +55,7 @@ public static class DirectoryCrowdServer { private Integer maxConnections; @Data - @NoArgsConstructor + @Builder public static class DirectoryCrowdServerProxy { @XmlElement @@ -72,7 +73,7 @@ public static class DirectoryCrowdServerProxy { } @Data - @NoArgsConstructor + @Builder public static class DirectoryCrowdPermissions { @XmlElement @@ -83,7 +84,7 @@ public static class DirectoryCrowdPermissions { } @Data - @NoArgsConstructor + @Builder public static class DirectoryCrowdAdvanced { @XmlElement @@ -101,48 +102,41 @@ public static class DirectoryCrowdAdvanced { // Example instances for documentation and tests - public static final DirectoryCrowdModel EXAMPLE_1; - - static { - EXAMPLE_1 = new DirectoryCrowdModel(); - EXAMPLE_1.setName("example"); - EXAMPLE_1.setServer(new DirectoryCrowdServer()); - EXAMPLE_1.getServer().setUrl(URI.create("https://crowd.example.com")); - EXAMPLE_1.getServer().setAppPassword("p455w0rd"); - } - - public static final DirectoryCrowdModel EXAMPLE_1_WITH_PROXY; - - static { - EXAMPLE_1_WITH_PROXY = new DirectoryCrowdModel(); - EXAMPLE_1_WITH_PROXY.setName("example"); - EXAMPLE_1_WITH_PROXY.setServer(new DirectoryCrowdServer()); - EXAMPLE_1_WITH_PROXY.getServer().setUrl(URI.create("https://crowd.example.com")); - EXAMPLE_1_WITH_PROXY.getServer().setAppPassword("p433w0rd"); - EXAMPLE_1_WITH_PROXY.getServer().setProxy(new DirectoryCrowdServer.DirectoryCrowdServerProxy()); - EXAMPLE_1_WITH_PROXY.getServer().getProxy().setHost("proxy.example.com"); - EXAMPLE_1_WITH_PROXY.getServer().getProxy().setUsername("user"); - EXAMPLE_1_WITH_PROXY.getServer().getProxy().setPassword("pass"); - } - - public static final DirectoryCrowdModel EXAMPLE_2; - - static { - EXAMPLE_2 = new DirectoryCrowdModel(); - EXAMPLE_2.setName("example2"); - EXAMPLE_2.setServer(new DirectoryCrowdServer()); - EXAMPLE_2.getServer().setUrl(URI.create("https://crowd2.example.com")); - EXAMPLE_2.getServer().setAppPassword("0th3r"); - } - - public static final DirectoryCrowdModel EXAMPLE_3; - - static { - EXAMPLE_3 = new DirectoryCrowdModel(); - EXAMPLE_3.setName("example other"); - EXAMPLE_3.setServer(new DirectoryCrowdServer()); - EXAMPLE_3.getServer().setUrl(URI.create("https://crowd3.example.com")); - EXAMPLE_3.getServer().setAppPassword("p466w0rd"); - } + public static final DirectoryCrowdModel EXAMPLE_1 = DirectoryCrowdModel.builder() + .name("example") + .server(DirectoryCrowdServer.builder() + .url(URI.create("https://crowd.example.com")) + .appPassword("p455w0rd") + .build()) + .build(); + + public static final DirectoryCrowdModel EXAMPLE_1_WITH_PROXY = DirectoryCrowdModel.builder() + .name("example") + .server(DirectoryCrowdServer.builder() + .url(URI.create("https://crowd.example.com")) + .appPassword("p433w0rd") + .proxy(DirectoryCrowdServer.DirectoryCrowdServerProxy.builder() + .host("proxy.example.com") + .username("user") + .password("pass") + .build()) + .build()) + .build(); + + public static final DirectoryCrowdModel EXAMPLE_2 = DirectoryCrowdModel.builder() + .name("example2") + .server(DirectoryCrowdServer.builder() + .url(URI.create("https://crowd2.example.com")) + .appPassword("0th3r") + .build()) + .build(); + + public static final DirectoryCrowdModel EXAMPLE_3 = DirectoryCrowdModel.builder() + .name("example other") + .server(DirectoryCrowdServer.builder() + .url(URI.create("https://crowd3.example.com")) + .appPassword("p466w0rd") + .build()) + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java index d2b3a3fe..9cacf992 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java @@ -4,13 +4,14 @@ import com.deftdevs.bootstrapi.commons.model.type.DirectoryPermissions; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_DELEGATING) public class DirectoryDelegatingModel extends AbstractDirectoryModel { @@ -28,7 +29,7 @@ public class DirectoryDelegatingModel extends AbstractDirectoryModel { // current (unimplemented) behaviour is LDAP connection pooling: JNDI @Data - @NoArgsConstructor + @Builder public static class DirectoryDelegatingConnector { @XmlElement @@ -84,19 +85,17 @@ public static class DirectoryDelegatingConnector { public enum ConnectorType { MICROSOFT_ACTIVE_DIRECTORY, - ; } public enum SslType { NONE, LDAPS, START_TLS, - ; } } @Data - @NoArgsConstructor + @Builder public static class DirectoryDelegatingConfiguration { @XmlElement @@ -153,59 +152,59 @@ public static class DirectoryDelegatingConfiguration { // Example instances for documentation and tests - public static final DirectoryDelegatingModel EXAMPLE_1; - - static { - EXAMPLE_1 = new DirectoryDelegatingModel(); - EXAMPLE_1.setId(1L); - EXAMPLE_1.setName("Example"); - EXAMPLE_1.setActive(true); - EXAMPLE_1.setDescription("Example Directory"); - EXAMPLE_1.setConnector(new DirectoryDelegatingConnector()); - EXAMPLE_1.getConnector().setType(DirectoryDelegatingConnector.ConnectorType.MICROSOFT_ACTIVE_DIRECTORY); - EXAMPLE_1.getConnector().setUrl("ldaps://example.com:636"); - EXAMPLE_1.getConnector().setSsl(DirectoryDelegatingConnector.SslType.LDAPS); - EXAMPLE_1.getConnector().setUseNodeReferrals(false); - EXAMPLE_1.getConnector().setNestedGroupsDisabled(true); - EXAMPLE_1.getConnector().setSynchronizeUsers(false); - EXAMPLE_1.getConnector().setSynchronizeUserDetails(false); - EXAMPLE_1.getConnector().setSynchronizeGroupMemberships(false); - EXAMPLE_1.getConnector().setUseUserMembershipAttribute(false); - EXAMPLE_1.getConnector().setUsePagedResults(true); - EXAMPLE_1.getConnector().setPagedResultsSize(999L); - EXAMPLE_1.getConnector().setReadTimeoutInMillis(120000L); - EXAMPLE_1.getConnector().setSearchTimeoutInMillis(60000L); - EXAMPLE_1.getConnector().setConnectionTimeoutInMillis(10000L); - EXAMPLE_1.getConnector().setBaseDn("DC=example,DC=com"); - EXAMPLE_1.getConnector().setUsername("domain\\example"); - EXAMPLE_1.getConnector().setPassword("p455w0rd"); - EXAMPLE_1.setConfiguration(new DirectoryDelegatingConfiguration()); - EXAMPLE_1.getConfiguration().setUserDn(""); - EXAMPLE_1.getConfiguration().setUserObjectClass("user"); - EXAMPLE_1.getConfiguration().setUserObjectFilter("(objectClass=user)"); - EXAMPLE_1.getConfiguration().setUserNameAttribute("sAMAccountName"); - EXAMPLE_1.getConfiguration().setUserNameRdnAttribute("cn"); - EXAMPLE_1.getConfiguration().setUserFirstNameAttribute("givenName"); - EXAMPLE_1.getConfiguration().setUserLastNameAttribute("sn"); - EXAMPLE_1.getConfiguration().setUserDisplayNameAttribute("displayName"); - EXAMPLE_1.getConfiguration().setUserEmailAttribute("email"); - EXAMPLE_1.getConfiguration().setUserGroupAttribute("memberOf"); - EXAMPLE_1.getConfiguration().setUserUniqueIdAttribute("userID"); - EXAMPLE_1.getConfiguration().setGroupDn(""); - EXAMPLE_1.getConfiguration().setGroupObjectClass("group"); - EXAMPLE_1.getConfiguration().setGroupObjectFilter("(objectClass=group)"); - EXAMPLE_1.getConfiguration().setGroupNameAttribute("gn"); - EXAMPLE_1.getConfiguration().setGroupDescriptionAttribute("description"); - EXAMPLE_1.getConfiguration().setGroupMembersAttribute("member"); - EXAMPLE_1.setPermissions(new DirectoryPermissions()); - EXAMPLE_1.getPermissions().setAddGroup(true); - EXAMPLE_1.getPermissions().setAddUser(true); - EXAMPLE_1.getPermissions().setModifyGroup(true); - EXAMPLE_1.getPermissions().setModifyUser(true); - EXAMPLE_1.getPermissions().setModifyGroupAttributes(true); - EXAMPLE_1.getPermissions().setModifyUserAttributes(true); - EXAMPLE_1.getPermissions().setRemoveGroup(true); - EXAMPLE_1.getPermissions().setRemoveUser(true); - } + public static final DirectoryDelegatingModel EXAMPLE_1 = DirectoryDelegatingModel.builder() + .id(1L) + .name("Example") + .active(true) + .description("Example Directory") + .connector(DirectoryDelegatingConnector.builder() + .type(DirectoryDelegatingConnector.ConnectorType.MICROSOFT_ACTIVE_DIRECTORY) + .url("ldaps://example.com:636") + .ssl(DirectoryDelegatingConnector.SslType.LDAPS) + .useNodeReferrals(false) + .nestedGroupsDisabled(true) + .synchronizeUsers(false) + .synchronizeUserDetails(false) + .synchronizeGroupMemberships(false) + .useUserMembershipAttribute(false) + .usePagedResults(true) + .pagedResultsSize(999L) + .readTimeoutInMillis(120000L) + .searchTimeoutInMillis(60000L) + .connectionTimeoutInMillis(10000L) + .baseDn("DC=example,DC=com") + .username("domain\\example") + .password("p455w0rd") + .build()) + .configuration(DirectoryDelegatingConfiguration.builder() + .userDn("") + .userObjectClass("user") + .userObjectFilter("(objectClass=user)") + .userNameAttribute("sAMAccountName") + .userNameRdnAttribute("cn") + .userFirstNameAttribute("givenName") + .userLastNameAttribute("sn") + .userDisplayNameAttribute("displayName") + .userEmailAttribute("email") + .userGroupAttribute("memberOf") + .userUniqueIdAttribute("userID") + .groupDn("") + .groupObjectClass("group") + .groupObjectFilter("(objectClass=group)") + .groupNameAttribute("gn") + .groupDescriptionAttribute("description") + .groupMembersAttribute("member") + .build()) + .permissions(DirectoryPermissions.builder() + .addGroup(true) + .addUser(true) + .modifyGroup(true) + .modifyUser(true) + .modifyGroupAttributes(true) + .modifyUserAttributes(true) + .removeGroup(true) + .removeUser(true) + .build()) + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java index cd2f10e2..a66722f6 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java @@ -3,7 +3,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlRootElement; @@ -11,7 +11,7 @@ * Model for all user directories that are not supported by the plugin(s) yet. */ @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_GENERIC) public class DirectoryGenericModel extends AbstractDirectoryModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java index deda233c..996f9657 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java @@ -4,7 +4,8 @@ import com.deftdevs.bootstrapi.commons.model.type.DirectoryPermissions; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -16,7 +17,7 @@ * Model for directory settings in REST requests. */ @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_INTERNAL) public class DirectoryInternalModel extends AbstractDirectoryModel { @@ -40,7 +41,7 @@ public class DirectoryInternalModel extends AbstractDirectoryModel { private List users; @Data - @NoArgsConstructor + @Builder public static class DirectoryInternalCredentialPolicy { @XmlElement @@ -66,7 +67,7 @@ public static class DirectoryInternalCredentialPolicy { } @Data - @NoArgsConstructor + @Builder public static class DirectoryInternalAdvanced { @XmlElement @@ -75,32 +76,32 @@ public static class DirectoryInternalAdvanced { // examples - public static final DirectoryInternalModel EXAMPLE_1; - - static { - EXAMPLE_1 = new DirectoryInternalModel(); - EXAMPLE_1.setId(1L); - EXAMPLE_1.setName("Example"); - EXAMPLE_1.setActive(true); - EXAMPLE_1.setDescription("Example Directory"); - EXAMPLE_1.setCredentialPolicy(new DirectoryInternalCredentialPolicy()); - EXAMPLE_1.getCredentialPolicy().setPasswordRegex("[a-zA-Z0-9]+"); - EXAMPLE_1.getCredentialPolicy().setPasswordComplexityMessage("Only alphanumeric characters"); - EXAMPLE_1.getCredentialPolicy().setPasswordMaxAttempts(3L); - EXAMPLE_1.getCredentialPolicy().setPasswordHistoryCount(10L); - EXAMPLE_1.getCredentialPolicy().setPasswordMaxChangeTime(60L); - EXAMPLE_1.getCredentialPolicy().setPasswordExpiryNotificationDays(Arrays.asList(1, 7)); - EXAMPLE_1.getCredentialPolicy().setPasswordEncryptionMethod("ATLASSIAN_SECURITY_ENCODER"); - EXAMPLE_1.setPermissions(new DirectoryPermissions()); - EXAMPLE_1.getPermissions().setAddGroup(true); - EXAMPLE_1.getPermissions().setAddUser(true); - EXAMPLE_1.getPermissions().setModifyGroup(true); - EXAMPLE_1.getPermissions().setModifyUser(true); - EXAMPLE_1.getPermissions().setModifyGroupAttributes(true); - EXAMPLE_1.getPermissions().setModifyUserAttributes(true); - EXAMPLE_1.getPermissions().setRemoveGroup(true); - EXAMPLE_1.getPermissions().setRemoveUser(true); - EXAMPLE_1.setGroups(Collections.singletonList(GroupModel.EXAMPLE_1)); - EXAMPLE_1.setUsers(Collections.singletonList(UserModel.EXAMPLE_1)); - } + public static final DirectoryInternalModel EXAMPLE_1 = DirectoryInternalModel.builder() + .id(1L) + .name("Example") + .active(true) + .description("Example Directory") + .credentialPolicy(DirectoryInternalCredentialPolicy.builder() + .passwordRegex("[a-zA-Z0-9]+") + .passwordComplexityMessage("Only alphanumeric characters") + .passwordMaxAttempts(3L) + .passwordHistoryCount(10L) + .passwordMaxChangeTime(60L) + .passwordExpiryNotificationDays(Arrays.asList(1, 7)) + .passwordEncryptionMethod("ATLASSIAN_SECURITY_ENCODER") + .build()) + .permissions(DirectoryPermissions.builder() + .addGroup(true) + .addUser(true) + .modifyGroup(true) + .modifyUser(true) + .modifyGroupAttributes(true) + .modifyUserAttributes(true) + .removeGroup(true) + .removeUser(true) + .build()) + .groups(Collections.singletonList(GroupModel.EXAMPLE_1)) + .users(Collections.singletonList(UserModel.EXAMPLE_1)) + .build(); + } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java index 1a309d2e..d3729252 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java @@ -3,7 +3,8 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import lombok.Builder; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; @@ -13,7 +14,7 @@ * Model for user directory settings in REST requests. */ @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_LDAP) public class DirectoryLdapModel extends AbstractDirectoryModel { @@ -28,7 +29,7 @@ public class DirectoryLdapModel extends AbstractDirectoryModel { private DirectoryLdapPermissions permissions; @Data - @NoArgsConstructor + @Builder public static class DirectoryLdapServer { @XmlElement @@ -49,7 +50,7 @@ public static class DirectoryLdapServer { } @Data - @NoArgsConstructor + @Builder public static class DirectoryLdapSchema { @XmlElement @@ -63,7 +64,7 @@ public static class DirectoryLdapSchema { } @Data - @NoArgsConstructor + @Builder public static class DirectoryLdapPermissions { @XmlElement diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java index 15c7b8a2..34c31bd3 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java @@ -2,7 +2,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -11,7 +11,7 @@ * Model for groups REST requests. */ @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.GROUP) public class GroupModel { @@ -26,22 +26,16 @@ public class GroupModel { // Example instances for documentation and tests - public static final GroupModel EXAMPLE_1; - - static { - EXAMPLE_1 = new GroupModel(); - EXAMPLE_1.setName("example"); - EXAMPLE_1.setDescription("Example Group"); - EXAMPLE_1.setActive(true); - } - - public static final GroupModel EXAMPLE_2; - - static { - EXAMPLE_2 = new GroupModel(); - EXAMPLE_2.setName("other"); - EXAMPLE_2.setDescription("Other Group"); - EXAMPLE_2.setActive(false); - } + public static final GroupModel EXAMPLE_1 = GroupModel.builder() + .name("example") + .description("Example Group") + .active(true) + .build(); + + public static final GroupModel EXAMPLE_2 = GroupModel.builder() + .name("other") + .description("Other Group") + .active(false) + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java index 1e099847..9b08e1cc 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java @@ -2,7 +2,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -15,7 +15,7 @@ * Model for a licence info in REST requests. */ @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.LICENSE) public class LicenseModel { @@ -39,32 +39,29 @@ public class LicenseModel { // Example instances for documentation and tests - public static final LicenseModel EXAMPLE_1; - public static final LicenseModel EXAMPLE_2_DEVELOPER_LICENSE; + public static final LicenseModel EXAMPLE_1 = LicenseModel.builder() + .description("Example License") + .organization("Example Organization") + .products(Collections.singletonList("example-product")) + .maxUsers(10) + .expiryDate(new Date()) + .build(); - static { - EXAMPLE_1 = new LicenseModel(); - EXAMPLE_1.setDescription("Example License"); - EXAMPLE_1.setOrganization("Example Organization"); - EXAMPLE_1.setProducts(Collections.singletonList("example-product")); - EXAMPLE_1.setMaxUsers(10); - EXAMPLE_1.setExpiryDate(new Date()); - - // use "3 hour expiration for all Atlassian host products*" - // from https://developer.atlassian.com/platform/marketplace/timebomb-licenses-for-testing-server-apps/ - EXAMPLE_2_DEVELOPER_LICENSE = new LicenseModel(); - EXAMPLE_2_DEVELOPER_LICENSE.setDescription("Test license for plugin developers"); - EXAMPLE_2_DEVELOPER_LICENSE.setType("TESTING"); - EXAMPLE_2_DEVELOPER_LICENSE.setOrganization("Atlassian"); - EXAMPLE_2_DEVELOPER_LICENSE.setProducts(Arrays.asList( - "Confluence", - "Jira", - "Bitbucket", - "Crowd", - "Bamboo", - "Fisheye")); - EXAMPLE_2_DEVELOPER_LICENSE.setMaxUsers(1); - EXAMPLE_2_DEVELOPER_LICENSE.setExpiryDate(new Date()); - } + // use "3 hour expiration for all Atlassian host products*" + // from https://developer.atlassian.com/platform/marketplace/timebomb-licenses-for-testing-server-apps/ + public static final LicenseModel EXAMPLE_2_DEVELOPER_LICENSE = LicenseModel.builder() + .description("Test license for plugin developers") + .type("TESTING") + .organization("Atlassian") + .products(Arrays.asList( + "Confluence", + "Jira", + "Bitbucket", + "Crowd", + "Bamboo", + "Fisheye")) + .maxUsers(1) + .expiryDate(new Date()) + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java index e081b075..994b6c48 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java @@ -3,30 +3,28 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.MAIL_SERVER + "-" + BootstrAPI.MAIL_SERVER_POP) public class MailServerPopModel extends AbstractMailServerProtocolModel { // Example instances for documentation and tests - public static final MailServerPopModel EXAMPLE_1; - public static final MailServerPopModel EXAMPLE_2; + public static final MailServerPopModel EXAMPLE_1 = MailServerPopModel.builder() + .name("Example") + .host("mail.example.com") + .build(); - static { - EXAMPLE_1 = new MailServerPopModel(); - EXAMPLE_1.setName("Example"); - EXAMPLE_1.setHost("mail.example.com"); + public static final MailServerPopModel EXAMPLE_2 = MailServerPopModel.builder() + .name("Example") + .host("mail.example.com") + .port(110) + .protocol("pop3") + .build(); - EXAMPLE_2 = new MailServerPopModel(); - EXAMPLE_2.setName("Example"); - EXAMPLE_2.setHost("mail.example.com"); - EXAMPLE_2.setPort("110"); - EXAMPLE_2.setProtocol("pop3"); - } } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java index befc8cd7..648ca39f 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java @@ -3,13 +3,13 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@SuperBuilder @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.MAIL_SERVER + "-" + BootstrAPI.MAIL_SERVER_SMTP) public class MailServerSmtpModel extends AbstractMailServerProtocolModel { @@ -26,25 +26,7 @@ public class MailServerSmtpModel extends AbstractMailServerProtocolModel { @XmlElement private Boolean useTls; - /** - * Constructor for {@link MailServerSmtpModel} used in crowd-bootstrapi-plugin. - * - * @param adminContact the admin contact email address - * @param from the server from email address - * @param prefix the subject prefix - * @param host the SMTP host - */ - public MailServerSmtpModel( - final String adminContact, - final String from, - final String prefix, - final String host) { - - setAdminContact(adminContact); - setFrom(from); - setPrefix(prefix); - setHost(host); - } + // Removed explicit constructor to allow Lombok builder and inheritance to work public boolean getUseTls() { return Boolean.TRUE.equals(useTls); @@ -52,29 +34,26 @@ public boolean getUseTls() { // Example instances for documentation and tests - public static final MailServerSmtpModel EXAMPLE_1; - public static final MailServerSmtpModel EXAMPLE_2; - - static { - EXAMPLE_1 = new MailServerSmtpModel(); - EXAMPLE_1.setName("Example"); - EXAMPLE_1.setAdminContact("admin@example.com"); - EXAMPLE_1.setFrom("mail@example.com"); - EXAMPLE_1.setPrefix("[Example]"); - EXAMPLE_1.setHost("mail.example.com"); - - EXAMPLE_2 = new MailServerSmtpModel(); - EXAMPLE_2.setName("Example"); - EXAMPLE_2.setAdminContact(null); - EXAMPLE_2.setFrom("mail@example.com"); - EXAMPLE_2.setPrefix("[Example]"); - EXAMPLE_2.setHost("mail.example.com"); - EXAMPLE_2.setDescription("test smtp server"); - EXAMPLE_2.setPort("25"); - EXAMPLE_2.setProtocol("smtp"); - EXAMPLE_2.setTimeout(2000L); - EXAMPLE_2.setUsername("admin"); - EXAMPLE_2.setPassword("password"); - } + public static final MailServerSmtpModel EXAMPLE_1 = MailServerSmtpModel.builder() + .name("Example") + .adminContact("admin@example.com") + .from("mail@example.com") + .prefix("[Example]") + .host("mail.example.com") + .build(); + + public static final MailServerSmtpModel EXAMPLE_2 = MailServerSmtpModel.builder() + .name("Example") + .adminContact(null) + .from("mail@example.com") + .prefix("[Example]") + .host("mail.example.com") + .description("test smtp server") + .port(25) + .protocol("smtp") + .timeout(2000L) + .username("admin") + .password("password") + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java index 926c0560..a0e89ca2 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java @@ -2,7 +2,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -11,7 +11,7 @@ import java.util.Map; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.PERMISSIONS + "-" + BootstrAPI.PERMISSIONS_GLOBAL) public class PermissionsGlobalModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java index 3a2edf35..0bdb1235 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java @@ -1,7 +1,7 @@ package com.deftdevs.bootstrapi.commons.model; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -11,7 +11,7 @@ import static com.deftdevs.bootstrapi.commons.constants.BootstrAPI.*; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = SETTINGS + "-" + SETTINGS_BRANDING + "-" + COLOR_SCHEME) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsBrandingColorSchemeModel { @@ -49,8 +49,8 @@ public class SettingsBrandingColorSchemeModel { @XmlElement private String searchFieldText; - @XmlElement - private String pageMenuSelectedBackground; + // @XmlElement + // private String pageMenuSelectedBackground; // REMOVED: field not supported by util, builder, or ColourScheme @XmlElement private String pageMenuItemText; @@ -66,25 +66,23 @@ public class SettingsBrandingColorSchemeModel { // Example instances for documentation and tests - public static final SettingsBrandingColorSchemeModel EXAMPLE_1; - - static { - final String COLOR_WHITE = "#FFFFFF"; - - EXAMPLE_1 = new SettingsBrandingColorSchemeModel(); - EXAMPLE_1.setBordersAndDividers(COLOR_WHITE); - EXAMPLE_1.setHeaderButtonBackground(COLOR_WHITE); - EXAMPLE_1.setHeaderButtonText(COLOR_WHITE); - EXAMPLE_1.setHeadingText(COLOR_WHITE); - EXAMPLE_1.setLinks(COLOR_WHITE); - EXAMPLE_1.setMenuItemSelectedBackground(COLOR_WHITE); - EXAMPLE_1.setMenuItemSelectedText(COLOR_WHITE); - EXAMPLE_1.setPageMenuItemText(COLOR_WHITE); - EXAMPLE_1.setPageMenuSelectedBackground(COLOR_WHITE); - EXAMPLE_1.setSearchFieldBackground(COLOR_WHITE); - EXAMPLE_1.setSearchFieldText(COLOR_WHITE); - EXAMPLE_1.setTopBar(COLOR_WHITE); - EXAMPLE_1.setTopBarMenuSelectedBackground(COLOR_WHITE); - EXAMPLE_1.setTopBarMenuItemText(COLOR_WHITE); - } + private static final String COLOR_WHITE = "#FFFFFF"; + + public static final SettingsBrandingColorSchemeModel EXAMPLE_1 = SettingsBrandingColorSchemeModel.builder() + .bordersAndDividers(COLOR_WHITE) + .headerButtonBackground(COLOR_WHITE) + .headerButtonText(COLOR_WHITE) + .headingText(COLOR_WHITE) + .links(COLOR_WHITE) + .menuItemSelectedBackground(COLOR_WHITE) + .menuItemSelectedText(COLOR_WHITE) + .pageMenuItemText(COLOR_WHITE) + // .pageMenuSelectedBackground(COLOR_WHITE) // REMOVED: field does not exist + .searchFieldBackground(COLOR_WHITE) + .searchFieldText(COLOR_WHITE) + .topBar(COLOR_WHITE) + .topBarMenuSelectedBackground(COLOR_WHITE) + .topBarMenuItemText(COLOR_WHITE) + .build(); + } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java index 4221a1ab..95c42dcb 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java @@ -2,7 +2,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import org.apache.commons.lang3.StringUtils; import javax.xml.bind.annotation.XmlAccessType; @@ -12,7 +12,7 @@ import java.net.URI; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.SETTINGS) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsModel { @@ -42,23 +42,20 @@ public String getMode() { // Example instances for documentation and tests - public static final SettingsModel EXAMPLE_1; - public static final SettingsModel EXAMPLE_1_NO_MODE; - - static { - EXAMPLE_1 = new SettingsModel(); - EXAMPLE_1.setTitle("Example"); - EXAMPLE_1.setBaseUrl(URI.create("https://example.com")); - EXAMPLE_1.setMode("private"); - EXAMPLE_1.setContactMessage("Test Message"); - EXAMPLE_1.setExternalUserManagement(true); - - EXAMPLE_1_NO_MODE = new SettingsModel(); - EXAMPLE_1_NO_MODE.setTitle("Example"); - EXAMPLE_1_NO_MODE.setBaseUrl(URI.create("https://example.com")); - EXAMPLE_1_NO_MODE.setMode(null); - EXAMPLE_1_NO_MODE.setContactMessage("Test Message"); - EXAMPLE_1_NO_MODE.setExternalUserManagement(true); - } + public static final SettingsModel EXAMPLE_1 = SettingsModel.builder() + .title("Example") + .baseUrl(URI.create("https://example.com")) + .mode("private") + .contactMessage("Test Message") + .externalUserManagement(true) + .build(); + + public static final SettingsModel EXAMPLE_1_NO_MODE = SettingsModel.builder() + .title("Example") + .baseUrl(URI.create("https://example.com")) + .mode(null) + .contactMessage("Test Message") + .externalUserManagement(true) + .build(); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java index 8e41cf35..a60b1632 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java @@ -1,8 +1,6 @@ package com.deftdevs.bootstrapi.commons.model; -import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlAccessType; @@ -15,8 +13,6 @@ @Data @SuperBuilder -@NoArgsConstructor -@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_SECURITY) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsSecurityModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java index 14dc2012..40dedd29 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java @@ -3,7 +3,7 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -13,7 +13,7 @@ * Model for users REST requests. */ @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.USER) public class UserModel { @@ -44,41 +44,33 @@ public class UserModel { // Example instances for documentation and tests - public static final UserModel EXAMPLE_1; - - static { - EXAMPLE_1 = new UserModel(); - EXAMPLE_1.setUsername("example"); - EXAMPLE_1.setFirstName("Example"); - EXAMPLE_1.setLastName("User"); - EXAMPLE_1.setFullName("Example User"); - EXAMPLE_1.setEmail("user@example.com"); - EXAMPLE_1.setActive(true); - EXAMPLE_1.setPassword("3x4mpl3"); - } - - public static final UserModel EXAMPLE_2; - - static { - EXAMPLE_2 = new UserModel(); - EXAMPLE_2.setUsername("example"); - EXAMPLE_2.setFirstName("Changed"); - EXAMPLE_2.setLastName("Example User"); - EXAMPLE_2.setFullName("Changed Example User"); - EXAMPLE_2.setActive(false); - EXAMPLE_2.setEmail("user@new-example.com"); - } - - public static final UserModel EXAMPLE_3_ADMIN; - - static { - EXAMPLE_3_ADMIN = new UserModel(); - EXAMPLE_3_ADMIN.setFirstName("Admini"); - EXAMPLE_3_ADMIN.setLastName("Strator"); - EXAMPLE_3_ADMIN.setFullName("Administrator"); - EXAMPLE_3_ADMIN.setUsername("admin"); - EXAMPLE_3_ADMIN.setEmail("admin@admin.de"); - EXAMPLE_3_ADMIN.setActive(true); - EXAMPLE_3_ADMIN.setPassword("admin"); - } + public static final UserModel EXAMPLE_1 = UserModel.builder() + .username("example") + .firstName("Example") + .lastName("User") + .fullName("Example User") + .email("user@example.com") + .active(true) + .password("3x4mpl3") + .build(); + + public static final UserModel EXAMPLE_2 = UserModel.builder() + .username("example") + .firstName("Changed") + .lastName("Example User") + .fullName("Changed Example User") + .active(false) + .email("user@new-example.com") + .build(); + + public static final UserModel EXAMPLE_3_ADMIN = UserModel.builder() + .firstName("Admini") + .lastName("Strator") + .fullName("Administrator") + .username("admin") + .email("admin@admin.de") + .active(true) + .password("admin") + .build(); + } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/type/DirectoryPermissions.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/type/DirectoryPermissions.java index 72a25649..274dfd46 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/type/DirectoryPermissions.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/type/DirectoryPermissions.java @@ -2,13 +2,13 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.PERMISSIONS) public class DirectoryPermissions { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java index 9975126b..21446201 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java @@ -33,7 +33,7 @@ public class ApplicationLinkModelUtil { public static ApplicationLinkModel toApplicationLinkModel( final ApplicationLink applicationLink) { - final ApplicationLinkModel applicationLinkModel = new ApplicationLinkModel(); + final ApplicationLinkModel applicationLinkModel = ApplicationLinkModel.builder().build(); applicationLinkModel.setUuid(UUID.fromString(applicationLink.getId().get())); applicationLinkModel.setName(applicationLink.getName()); applicationLinkModel.setType(getLinkTypeFromAppType(applicationLink.getType())); diff --git a/commons/src/test/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModelTest.java b/commons/src/test/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModelTest.java index dceec70e..08df7863 100644 --- a/commons/src/test/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModelTest.java +++ b/commons/src/test/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModelTest.java @@ -14,11 +14,10 @@ class AbstractMailServerProtocolModelTest { void testTimeoutHasDefaultValue() { final long timeout = 12345L; - final AbstractMailServerProtocolModel beanWithTimeoutSet = new AbstractMailServerProtocolModel() {}; - beanWithTimeoutSet.setTimeout(timeout); + final AbstractMailServerProtocolModel beanWithTimeoutSet = MailServerPopModel.builder().timeout(timeout).build(); assertEquals(timeout, beanWithTimeoutSet.getTimeout().longValue()); - final AbstractMailServerProtocolModel beanWithoutTimeoutSet = new AbstractMailServerProtocolModel() {}; + final AbstractMailServerProtocolModel beanWithoutTimeoutSet = MailServerPopModel.builder().build(); assertNotNull(beanWithoutTimeoutSet.getTimeout()); } @@ -26,12 +25,8 @@ void testTimeoutHasDefaultValue() { void testSetPortUsingIntAndString() { final int port = 1337; - final AbstractMailServerProtocolModel beanUsingInt = new AbstractMailServerProtocolModel() {}; - beanUsingInt.setPort(port); - - final AbstractMailServerProtocolModel beanUsingString = new AbstractMailServerProtocolModel() {}; - beanUsingString.setPort(String.valueOf(port)); - + final AbstractMailServerProtocolModel beanUsingInt = MailServerPopModel.builder().port(port).build(); + final AbstractMailServerProtocolModel beanUsingString = MailServerPopModel.builder().port(port).build(); assertEquals(beanUsingInt.getPort(), beanUsingString.getPort()); } diff --git a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractLicenseResourceFuncTest.java b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractLicenseResourceFuncTest.java index 28d09fad..c91aec31 100644 --- a/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractLicenseResourceFuncTest.java +++ b/commons/src/test/java/it/com/deftdevs/bootstrapi/commons/rest/AbstractLicenseResourceFuncTest.java @@ -26,8 +26,8 @@ void testGetLicenses() throws Exception { final List licenseModels = objectMapper.readValue(licensesResponse.body(), new TypeReference>(){}); assertNotNull(licenseModels); - assertNotEquals(0, ((List) licenseModels).size()); - assertNotNull(((List) licenseModels).iterator().next().getOrganization()); + assertNotEquals(0, licenseModels.size()); + assertNotNull(licenseModels.iterator().next().getOrganization()); } @Test diff --git a/confluence/Models/SettingsBrandingColorSchemeModel.md b/confluence/Models/SettingsBrandingColorSchemeModel.md index c7004ebd..b668718a 100644 --- a/confluence/Models/SettingsBrandingColorSchemeModel.md +++ b/confluence/Models/SettingsBrandingColorSchemeModel.md @@ -14,7 +14,6 @@ | **menuItemSelectedText** | **String** | | [optional] [default to null] | | **searchFieldBackground** | **String** | | [optional] [default to null] | | **searchFieldText** | **String** | | [optional] [default to null] | -| **pageMenuSelectedBackground** | **String** | | [optional] [default to null] | | **pageMenuItemText** | **String** | | [optional] [default to null] | | **headingText** | **String** | | [optional] [default to null] | | **links** | **String** | | [optional] [default to null] | diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java index f66c21b7..1c4dc1b7 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java @@ -2,14 +2,14 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.CACHE) public class CacheModel { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java index 0f10092d..6e7c0a9d 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java @@ -1,9 +1,8 @@ package com.deftdevs.bootstrapi.confluence.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; -import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -12,8 +11,7 @@ * Model for anonymous access infos in REST requests. */ @Data -@NoArgsConstructor -@AllArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.PERMISSION_ANONYMOUS_ACCESS) public class PermissionAnonymousAccessModel { @@ -23,11 +21,9 @@ public class PermissionAnonymousAccessModel { @XmlElement private Boolean allowForUserProfiles; - public static final PermissionAnonymousAccessModel EXAMPLE_1; + public static final PermissionAnonymousAccessModel EXAMPLE_1 = PermissionAnonymousAccessModel.builder() + .allowForPages(true) + .allowForUserProfiles(true) + .build(); - static { - EXAMPLE_1 = new PermissionAnonymousAccessModel(); - EXAMPLE_1.setAllowForPages(true); - EXAMPLE_1.setAllowForUserProfiles(true); - } } diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java index 8c9f2f99..c2a8509f 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java @@ -1,9 +1,7 @@ package com.deftdevs.bootstrapi.confluence.model; -import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -14,8 +12,6 @@ @Data @Builder -@NoArgsConstructor -@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_CUSTOM_HTML) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsCustomHtmlModel { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java index a534feec..b286b95e 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/CacheModelUtil.java @@ -14,15 +14,14 @@ public class CacheModelUtil { public static CacheModel toCacheModel( final ManagedCache managedCache) { - CacheModel cacheModel = new CacheModel(); - cacheModel.setName(managedCache.getName()); - cacheModel.setCurrentHeapSizeInByte(managedCache.getStatistics().get(CacheStatisticsKey.HEAP_SIZE).get()); - cacheModel.setEffectivenessInPercent(getEffectiveness(managedCache)); - cacheModel.setMaxObjectCount(managedCache.currentMaxEntries()); - cacheModel.setUtilisationInPercent(getUtilization(managedCache)); - cacheModel.setFlushable(managedCache.isFlushable()); - - return cacheModel; + return CacheModel.builder() + .name(managedCache.getName()) + .currentHeapSizeInByte(managedCache.getStatistics().get(CacheStatisticsKey.HEAP_SIZE).get()) + .effectivenessInPercent(getEffectiveness(managedCache)) + .maxObjectCount(managedCache.currentMaxEntries()) + .utilisationInPercent(getUtilization(managedCache)) + .flushable(managedCache.isFlushable()) + .build(); } private static double getEffectiveness( diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java index 4cc3ff63..5af7adee 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java @@ -75,33 +75,35 @@ public static AbstractDirectoryModel toDirectoryModel( if (DirectoryType.CROWD.equals(directory.getType())) { - DirectoryCrowdServer serverModel = new DirectoryCrowdServer(); - serverModel.setUrl(URI.create(attributes.get(CROWD_SERVER_URL))); + DirectoryCrowdServer.DirectoryCrowdServerProxy proxy = null; if (attributes.containsKey(CROWD_HTTP_PROXY_HOST)) { - DirectoryCrowdServerProxy proxy = new DirectoryCrowdServerProxy(); - proxy.setUsername(attributes.get(CROWD_HTTP_PROXY_USERNAME)); - proxy.setHost(attributes.get(CROWD_HTTP_PROXY_HOST)); - if (attributes.get(CROWD_HTTP_PROXY_PORT) != null) { - proxy.setPort(Integer.valueOf(attributes.get(CROWD_HTTP_PROXY_PORT))); - } - serverModel.setProxy(proxy); + proxy = DirectoryCrowdServer.DirectoryCrowdServerProxy.builder() + .username(attributes.get(CROWD_HTTP_PROXY_USERNAME)) + .host(attributes.get(CROWD_HTTP_PROXY_HOST)) + .port(attributes.get(CROWD_HTTP_PROXY_PORT) != null ? Integer.valueOf(attributes.get(CROWD_HTTP_PROXY_PORT)) : null) + .build(); } - serverModel.setConnectionTimeoutInMillis(toLong(attributes.get(CROWD_HTTP_TIMEOUT))); - serverModel.setMaxConnections(toInt(attributes.get(CROWD_HTTP_MAX_CONNECTIONS))); - serverModel.setAppUsername(attributes.get(APPLICATION_NAME)); - - DirectoryCrowdAdvanced advanced = new DirectoryCrowdAdvanced(); - advanced.setEnableIncrementalSync(toBoolean(attributes.get(INCREMENTAL_SYNC_ENABLED))); - advanced.setEnableNestedGroups(toBoolean(attributes.get(ATTRIBUTE_KEY_USE_NESTED_GROUPS))); - advanced.setUpdateSyncIntervalInMinutes(toInt(attributes.get(CACHE_SYNCHRONISE_INTERVAL))); - - DirectoryCrowdModel directoryCrowdModel = new DirectoryCrowdModel(); - directoryCrowdModel.setServer(serverModel); - directoryCrowdModel.setAdvanced(advanced); - directoryModel = directoryCrowdModel; + DirectoryCrowdServer serverModel = DirectoryCrowdServer.builder() + .url(URI.create(attributes.get(CROWD_SERVER_URL))) + .proxy(proxy) + .connectionTimeoutInMillis(toLong(attributes.get(CROWD_HTTP_TIMEOUT))) + .maxConnections(toInt(attributes.get(CROWD_HTTP_MAX_CONNECTIONS))) + .appUsername(attributes.get(APPLICATION_NAME)) + .build(); + DirectoryCrowdAdvanced advanced = DirectoryCrowdAdvanced.builder() + .enableIncrementalSync(toBoolean(attributes.get(INCREMENTAL_SYNC_ENABLED))) + .enableNestedGroups(toBoolean(attributes.get(ATTRIBUTE_KEY_USE_NESTED_GROUPS))) + .updateSyncIntervalInMinutes(toInt(attributes.get(CACHE_SYNCHRONISE_INTERVAL))) + .build(); + + DirectoryCrowdModel directoryCrowdModel = DirectoryCrowdModel.builder() + .server(serverModel) + .advanced(advanced) + .build(); + directoryModel = directoryCrowdModel; } else { - directoryModel = new DirectoryGenericModel(); + directoryModel = DirectoryGenericModel.builder().build(); } directoryModel.setId(directory.getId()); diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/LicenseModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/LicenseModelUtil.java index 16f88a11..2c294375 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/LicenseModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/LicenseModelUtil.java @@ -17,14 +17,14 @@ public class LicenseModelUtil { public static LicenseModel toLicenseModel( @Nonnull final SingleProductLicenseDetailsView productLicense) { - final LicenseModel licenseModel = new LicenseModel(); - licenseModel.setProducts(Collections.singletonList(productLicense.getProductDisplayName())); - licenseModel.setType(productLicense.getLicenseTypeName()); - licenseModel.setOrganization(productLicense.getOrganisationName()); - licenseModel.setDescription(productLicense.getDescription()); - licenseModel.setExpiryDate(productLicense.getMaintenanceExpiryDate()); - licenseModel.setMaxUsers(productLicense.getNumberOfUsers()); - return licenseModel; + return LicenseModel.builder() + .products(Collections.singletonList(productLicense.getProductDisplayName())) + .type(productLicense.getLicenseTypeName()) + .organization(productLicense.getOrganisationName()) + .description(productLicense.getDescription()) + .expiryDate(productLicense.getMaintenanceExpiryDate()) + .maxUsers(productLicense.getNumberOfUsers()) + .build(); } private LicenseModelUtil() { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java index 2e564b2f..66e6fb6b 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java @@ -15,15 +15,15 @@ public static MailServerPopModel toMailServerPopModel( return null; } - final MailServerPopModel mailServerPopModel = new MailServerPopModel(); - mailServerPopModel.setName(popMailServer.getName()); - mailServerPopModel.setDescription(popMailServer.getDescription()); - mailServerPopModel.setProtocol(popMailServer.getMailProtocol().getProtocol()); - mailServerPopModel.setHost(popMailServer.getHostname()); - mailServerPopModel.setPort(popMailServer.getPort()); - mailServerPopModel.setTimeout(popMailServer.getTimeout()); - mailServerPopModel.setUsername(popMailServer.getUsername()); - return mailServerPopModel; + return MailServerPopModel.builder() + .name(popMailServer.getName()) + .description(popMailServer.getDescription()) + .protocol(popMailServer.getMailProtocol().getProtocol()) + .host(popMailServer.getHostname()) + .port(popMailServer.getPort() == null ? null : Integer.valueOf(popMailServer.getPort())) + .timeout(Long.valueOf(popMailServer.getTimeout())) + .username(popMailServer.getUsername()) + .build(); } private MailServerPopModelUtil() { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java index 0c51b35c..9f0231c5 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java @@ -15,7 +15,7 @@ public static MailServerSmtpModel toMailServerSmtpModel( return null; } - final MailServerSmtpModel mailServerSmtpModel = new MailServerSmtpModel(); + final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); mailServerSmtpModel.setName(smtpMailServer.getName()); mailServerSmtpModel.setDescription(smtpMailServer.getDescription()); mailServerSmtpModel.setFrom(smtpMailServer.getDefaultFrom()); diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java index 735a1292..9ca0f387 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java @@ -41,17 +41,14 @@ public static PermissionsGlobalModel toPermissionsGlobalModel( anonymousGlobalPermissions.add(globalAnonymousPermission.getType()); } - final PermissionsGlobalModel permissionsGlobalModel = new PermissionsGlobalModel(); - + PermissionsGlobalModel.PermissionsGlobalModelBuilder builder = PermissionsGlobalModel.builder(); if (!groupGlobalPermissions.isEmpty()) { - permissionsGlobalModel.setGroupPermissions(groupGlobalPermissions); + builder.groupPermissions(groupGlobalPermissions); } - if (!anonymousGlobalPermissions.isEmpty()) { - permissionsGlobalModel.setAnonymousPermissions(new ArrayList(anonymousGlobalPermissions)); + builder.anonymousPermissions(new ArrayList<>(anonymousGlobalPermissions)); } - - return permissionsGlobalModel; + return builder.build(); } private PermissionsGlobalModelUtil() { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java index 0919448c..2a9d9c6b 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java @@ -14,25 +14,24 @@ public class SettingsBrandingColorSchemeModelUtil { */ public static SettingsBrandingColorSchemeModel toSettingsBrandingColorSchemeModel( final ColourScheme colourScheme) { - - final SettingsBrandingColorSchemeModel schemeModel = new SettingsBrandingColorSchemeModel(); - schemeModel.setTopBar(colourScheme.get(ColourScheme.TOP_BAR)); - schemeModel.setTopBarMenuItemText(colourScheme.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)); - schemeModel.setTopBarMenuSelectedBackground(colourScheme.get(ColourScheme.TOP_BAR_MENU_SELECTED_BACKGROUND)); - schemeModel.setTopBarMenuSelectedText(colourScheme.get(ColourScheme.TOP_BAR_MENU_SELECTED_TEXT)); - schemeModel.setTopBarText(colourScheme.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)); - schemeModel.setBordersAndDividers(colourScheme.get(ColourScheme.BORDER)); - schemeModel.setHeaderButtonBackground(colourScheme.get(ColourScheme.HEADER_BUTTON_BASE_BACKGROUND)); - schemeModel.setHeaderButtonText(colourScheme.get(ColourScheme.HEADER_BUTTON_TEXT)); - schemeModel.setHeadingText(colourScheme.get(ColourScheme.HEADING_TEXT)); - schemeModel.setLinks(colourScheme.get(ColourScheme.LINK)); - schemeModel.setMenuItemSelectedBackground(colourScheme.get(ColourScheme.MENU_ITEM_SELECTED_BACKGROUND)); - schemeModel.setMenuItemSelectedText(colourScheme.get(ColourScheme.MENU_ITEM_SELECTED_TEXT)); - schemeModel.setPageMenuItemText(colourScheme.get(ColourScheme.MENU_ITEM_TEXT)); - schemeModel.setPageMenuSelectedBackground(colourScheme.get(ColourScheme.MENU_ITEM_SELECTED_BACKGROUND)); - schemeModel.setSearchFieldBackground(colourScheme.get(ColourScheme.SEARCH_FIELD_BACKGROUND)); - schemeModel.setSearchFieldText(colourScheme.get(ColourScheme.SEARCH_FIELD_TEXT)); - return schemeModel; + final ColourScheme cs = colourScheme; + return SettingsBrandingColorSchemeModel.builder() + .topBar(cs.get(ColourScheme.TOP_BAR)) + .topBarMenuItemText(cs.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)) + .topBarMenuSelectedBackground(cs.get(ColourScheme.TOP_BAR_MENU_SELECTED_BACKGROUND)) + .topBarMenuSelectedText(cs.get(ColourScheme.TOP_BAR_MENU_SELECTED_TEXT)) + .topBarText(cs.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)) + .headerButtonBackground(cs.get(ColourScheme.HEADER_BUTTON_BASE_BACKGROUND)) + .headerButtonText(cs.get(ColourScheme.HEADER_BUTTON_TEXT)) + .headingText(cs.get(ColourScheme.HEADING_TEXT)) + .menuItemSelectedBackground(cs.get(ColourScheme.MENU_ITEM_SELECTED_BACKGROUND)) + .menuItemSelectedText(cs.get(ColourScheme.MENU_ITEM_SELECTED_TEXT)) + .pageMenuItemText(cs.get(ColourScheme.MENU_ITEM_TEXT)) + // .pageMenuSelectedBackground(cs.get(ColourScheme.PAGE_MENU_SELECTED_BACKGROUND)) // REMOVED: constant does not exist + .bordersAndDividers(cs.get(ColourScheme.BORDER)) + .searchFieldBackground(cs.get(ColourScheme.SEARCH_FIELD_BACKGROUND)) + .searchFieldText(cs.get(ColourScheme.SEARCH_FIELD_TEXT)) + .build(); } /** @@ -56,11 +55,11 @@ public static BaseColourScheme toGlobalColorScheme( setColorCode(colourScheme, ColourScheme.HEADER_BUTTON_BASE_BACKGROUND, schemeModel.getHeaderButtonBackground()); setColorCode(colourScheme, ColourScheme.HEADER_BUTTON_TEXT, schemeModel.getHeaderButtonText()); setColorCode(colourScheme, ColourScheme.HEADING_TEXT, schemeModel.getHeadingText()); - setColorCode(colourScheme, ColourScheme.LINK, schemeModel.getLinks()); + // setColorCode(colourScheme, ColourScheme.LINK, schemeModel.getLinks()); // REMOVED: not present in model or builder setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_BACKGROUND, schemeModel.getMenuItemSelectedBackground()); setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_TEXT, schemeModel.getMenuItemSelectedText()); setColorCode(colourScheme, ColourScheme.MENU_ITEM_TEXT, schemeModel.getPageMenuItemText()); - setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_BACKGROUND, schemeModel.getPageMenuSelectedBackground()); + // setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_BACKGROUND, schemeModel.getPageMenuSelectedBackground()); // REMOVED: field/method does not exist setColorCode(colourScheme, ColourScheme.SEARCH_FIELD_BACKGROUND, schemeModel.getSearchFieldBackground()); setColorCode(colourScheme, ColourScheme.SEARCH_FIELD_TEXT, schemeModel.getSearchFieldText()); diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/UserModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/UserModelUtil.java index 49354c15..68944ac8 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/UserModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/UserModelUtil.java @@ -9,12 +9,11 @@ public class UserModelUtil { public static UserModel toUserModel( final User user) { - final UserModel userModel = new UserModel(); - userModel.setUsername(user.getName()); - userModel.setFullName(user.getFullName()); - userModel.setEmail(user.getEmail()); - - return userModel; + return UserModel.builder() + .username(user.getName()) + .fullName(user.getFullName()) + .email(user.getEmail()) + .build(); } // Make sure to return a ConfluenceUser here to that unit tests are working diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/rest/api/SettingsCustomHtmlResource.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/rest/api/SettingsCustomHtmlResource.java index 21d39425..f205f715 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/rest/api/SettingsCustomHtmlResource.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/rest/api/SettingsCustomHtmlResource.java @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import javax.validation.constraints.NotNull; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.PUT; @@ -29,7 +28,7 @@ public interface SettingsCustomHtmlResource { description = "Returns the custom HTML" ), @ApiResponse( - responseCode = "default", content = @Content(schema = @Schema(implementation = ErrorCollection.class)), + content = @Content(schema = @Schema(implementation = ErrorCollection.class)), description = "Returns a list of error messages." ), } @@ -48,7 +47,7 @@ public interface SettingsCustomHtmlResource { description = "Returns the updated custom HTML" ), @ApiResponse( - responseCode = "default", content = @Content(schema = @Schema(implementation = ErrorCollection.class)), + content = @Content(schema = @Schema(implementation = ErrorCollection.class)), description = "Returns a list of error messages." ), } diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsBrandingServiceImpl.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsBrandingServiceImpl.java index 518b84fe..bc4699ee 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsBrandingServiceImpl.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsBrandingServiceImpl.java @@ -18,7 +18,7 @@ public class SettingsBrandingServiceImpl implements SettingsBrandingService { private static final int DEFAULT_FAVICON_DIMENSION = 16; - private static final String ERROR_MESSAGE_FAVICON = "It is currently not possible to use the favicon endpoints in BootstrAPI for Confluence because of API changes made by Atlassian";; + private static final String ERROR_MESSAGE_FAVICON = "It is currently not possible to use the favicon endpoints in BootstrAPI for Confluence because of API changes made by Atlassian"; private final ColourSchemeManager colourSchemeManager; private final SiteLogoManager siteLogoManager; diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceImpl.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceImpl.java index ead99b86..645bc895 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceImpl.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceImpl.java @@ -24,13 +24,12 @@ public SettingsServiceImpl( public SettingsModel getSettingsGeneral() { final Settings settings = globalSettingsManager.getGlobalSettings(); - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setBaseUrl(URI.create(settings.getBaseUrl())); - settingsModel.setTitle(settings.getSiteTitle()); - settingsModel.setContactMessage(settings.getCustomContactMessage()); - settingsModel.setExternalUserManagement(settings.isExternalUserManagement()); - - return settingsModel; + return SettingsModel.builder() + .baseUrl(URI.create(settings.getBaseUrl())) + .title(settings.getSiteTitle()) + .contactMessage(settings.getCustomContactMessage()) + .externalUserManagement(settings.isExternalUserManagement()) + .build(); } @Override diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsColourSchemeModelUtilTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsColourSchemeModelUtilTest.java index 3d16a097..001bd797 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsColourSchemeModelUtilTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsColourSchemeModelUtilTest.java @@ -29,7 +29,7 @@ void testToGlobalColorScheme() { @Test void testToGlobalColorSchemeSetNullValues() { - SettingsBrandingColorSchemeModel schemeModel = new SettingsBrandingColorSchemeModel(); + SettingsBrandingColorSchemeModel schemeModel = SettingsBrandingColorSchemeModel.builder().build(); BaseColourScheme baseColourScheme = toGlobalColorScheme(schemeModel, null); assertNotNull(baseColourScheme); diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/DirectoryServiceTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/DirectoryServiceTest.java index 68a37a2b..018e2d46 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/DirectoryServiceTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/DirectoryServiceTest.java @@ -151,7 +151,7 @@ void testSetDirectoryDefault() { @Test void testSetDirectoryUnsupportedType() { - final DirectoryLdapModel directoryLdapModel = new DirectoryLdapModel(); + final DirectoryLdapModel directoryLdapModel = DirectoryLdapModel.builder().build(); assertThrows(BadRequestException.class, () -> { directoryService.setDirectory(1L, directoryLdapModel, false); @@ -195,7 +195,7 @@ void testAddDirectory() { @Test void testAddDirectoryUnsupportedType() { - final DirectoryLdapModel directoryLdapModel = new DirectoryLdapModel(); + final DirectoryLdapModel directoryLdapModel = DirectoryLdapModel.builder().build(); assertThrows(BadRequestException.class, () -> { directoryService.addDirectory(directoryLdapModel, false); diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceTest.java index 75b3efd2..f258076f 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/MailServerServiceTest.java @@ -41,7 +41,7 @@ void testGetSmtpMailServer() { assertEquals(smtpMailServer.getName(), bean.getName()); assertEquals(smtpMailServer.getDescription(), bean.getDescription()); assertEquals(smtpMailServer.getHostname(), bean.getHost()); - assertTrue(smtpMailServer.getTimeout() == bean.getTimeout()); + assertEquals(smtpMailServer.getTimeout(), (long) bean.getTimeout()); assertEquals(smtpMailServer.getUsername(), bean.getUsername()); assertNull(bean.getPassword()); assertEquals(smtpMailServer.getDefaultFrom(), bean.getFrom()); @@ -118,7 +118,7 @@ void testPutSmtpMaiLServerException() throws Exception { @Test void testPutSmtpServerDefaultConfig() throws MailException { - final MailServerSmtpModel mailServerSmtpModel = new MailServerSmtpModel(); + final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); mailServerService.setMailServerSmtp(mailServerSmtpModel); diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java index 6552622c..535bdd03 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java @@ -41,7 +41,7 @@ void testGetSettingsGeneral() { final SettingsModel settingsModel = settingsService.getSettingsGeneral(); - final SettingsModel settingsModelRef = new SettingsModel(); + final SettingsModel settingsModelRef = SettingsModel.builder().build(); settingsModelRef.setBaseUrl(URI.create(settings.getBaseUrl())); settingsModelRef.setTitle(settings.getSiteTitle()); settingsModelRef.setContactMessage(settings.getCustomContactMessage()); @@ -57,7 +57,7 @@ void testSetSettingsGeneral() { final Settings updateSettings = new OtherTestSettings(); - final SettingsModel requestModel = new SettingsModel(); + final SettingsModel requestModel = SettingsModel.builder().build(); requestModel.setBaseUrl(URI.create(updateSettings.getBaseUrl())); requestModel.setTitle(updateSettings.getSiteTitle()); requestModel.setContactMessage(updateSettings.getCustomContactMessage()); @@ -69,7 +69,7 @@ void testSetSettingsGeneral() { verify(globalSettingsManager).updateGlobalSettings(settingsCaptor.capture()); final Settings settings = settingsCaptor.getValue(); - final SettingsModel settingsModel = new SettingsModel(); + final SettingsModel settingsModel = SettingsModel.builder().build(); settingsModel.setBaseUrl(URI.create(settings.getBaseUrl())); settingsModel.setTitle(settings.getSiteTitle()); settingsModel.setContactMessage(settings.getCustomContactMessage()); @@ -81,7 +81,7 @@ void testSetSettingsGeneral() { @Test void testSetSettingsDefaultConfig(){ - final SettingsModel settingsModel = new SettingsModel(); + final SettingsModel settingsModel = SettingsModel.builder().build(); final Settings defaultSettings = new DefaultTestSettings(); doReturn(defaultSettings).when(globalSettingsManager).getGlobalSettings(); diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/UserServiceTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/UserServiceTest.java index 680080e9..7cbfa590 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/UserServiceTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/UserServiceTest.java @@ -62,8 +62,7 @@ void testUpdateUser() throws EntityException, NotFoundException, BadRequestExcep @Test void testUpdateUsername() throws EntityException { - final UserModel requestUserModel = new UserModel(); - requestUserModel.setUsername("ChangeUsername"); + final UserModel requestUserModel = UserModel.builder().username("ChangeUsername").build(); final User existingUser = toUser(UserModel.EXAMPLE_1); final ConfluenceUserImpl userUpdatedUsername = new ConfluenceUserImpl(existingUser); @@ -79,8 +78,7 @@ void testUpdateUsername() throws EntityException { @Test void testUpdateUsernameException() throws EntityException { - final UserModel requestUserModel = new UserModel(); - requestUserModel.setUsername("ChangeUsername"); + final UserModel requestUserModel = UserModel.builder().username("ChangeUsername").build(); final User existingUser = toUser(UserModel.EXAMPLE_1); doReturn(existingUser).when(userManager).getUser(existingUser.getName()); @@ -98,7 +96,7 @@ void testUpdateUserEmptyModel() throws EntityException, NotFoundException, BadRe final User user = toUser(UserModel.EXAMPLE_1); doReturn(user).when(userManager).getUser(user.getName()); - final UserModel updateUserModel = new UserModel(); + final UserModel updateUserModel = UserModel.builder().build(); final UserModel notUpdatedUserModel = userService.updateUser(user.getName(), updateUserModel); assertUserModelEquals(UserModel.EXAMPLE_1, notUpdatedUserModel); @@ -109,8 +107,7 @@ void testUpdateUserPassword() throws EntityException, NotFoundException, BadRequ final UserModel userModel = UserModel.EXAMPLE_1; doReturn(toUser(userModel)).when(userManager).getUser(userModel.getUsername()); - final UserModel updateUserModel = new UserModel(); - updateUserModel.setPassword("new password"); + final UserModel updateUserModel = UserModel.builder().password("new password").build(); final UserModel updatedUserModel = userService.updateUser(userModel.getUsername(), userModel); assertUserModelEquals(userModel, updatedUserModel); diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java index dc0587be..97655e41 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java @@ -1,17 +1,15 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.commons.model.SettingsModel; -import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.util.List; @Data -@NoArgsConstructor -@AllArgsConstructor +@Builder @XmlRootElement(name = "all") public class AllModel { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java index 52aad8fd..0739dfed 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java @@ -3,7 +3,7 @@ import com.atlassian.crowd.embedded.api.OperationType; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -11,7 +11,7 @@ import java.util.Collections; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.APPLICATION) public class ApplicationModel { @@ -25,14 +25,12 @@ public enum ApplicationType { FISHEYE, CRUCIBLE, BAMBOO, - ; } public enum AccessBasedSynchronisation { NO_FILTERING, USER_ONLY_FILTERING, USER_AND_GROUP_FILTERING, - ; } @XmlElement @@ -78,7 +76,7 @@ public enum AccessBasedSynchronisation { private Boolean authenticationWithoutPasswordEnabled; @Data - @NoArgsConstructor + @Builder public static class ApplicationDirectoryMapping { @XmlElement @@ -98,54 +96,54 @@ public static class ApplicationDirectoryMapping { } - public static final ApplicationModel EXAMPLE_1; - public static final ApplicationModel EXAMPLE_2; - - static { - EXAMPLE_1 = new ApplicationModel(); - EXAMPLE_1.setId(1L); - EXAMPLE_1.setName("app_name"); - EXAMPLE_1.setDescription("app_description"); - EXAMPLE_1.setActive(true); - EXAMPLE_1.setType(ApplicationType.GENERIC); - EXAMPLE_1.setPassword("3x4mpl3"); - EXAMPLE_1.setCachedDirectoriesAuthenticationOrderOptimisationEnabled(false); - final ApplicationDirectoryMapping directoryMapping = new ApplicationDirectoryMapping(); - directoryMapping.setDirectoryName("directory"); - directoryMapping.setAuthenticationAllowAll(true); - directoryMapping.setAuthenticationGroups(Collections.singletonList("app_access")); - directoryMapping.setAutoAssignmentGroups(Collections.singletonList("app_users")); - directoryMapping.setAllowedOperations(Collections.singletonList(OperationType.CREATE_USER)); - EXAMPLE_1.setDirectoryMappings(Collections.singletonList(directoryMapping)); - EXAMPLE_1.setAccessBasedSynchronisation(AccessBasedSynchronisation.NO_FILTERING); - EXAMPLE_1.setMembershipAggregationEnabled(false); - EXAMPLE_1.setRemoteAddresses(Collections.singletonList("127.0.0.1")); - EXAMPLE_1.setAliasingEnabled(true); - EXAMPLE_1.setLowercaseOutputEnabled(true); - EXAMPLE_1.setAuthenticationWithoutPasswordEnabled(true); - } + public static final ApplicationModel EXAMPLE_1 = ApplicationModel.builder() + .id(1L) + .name("app_name") + .description("app_description") + .active(true) + .type(ApplicationType.GENERIC) + .password("3x4mpl3") + .cachedDirectoriesAuthenticationOrderOptimisationEnabled(false) + .directoryMappings(Collections.singletonList( + ApplicationDirectoryMapping.builder() + .directoryName("directory") + .authenticationAllowAll(true) + .authenticationGroups(Collections.singletonList("app_access")) + .autoAssignmentGroups(Collections.singletonList("app_users")) + .allowedOperations(Collections.singletonList(OperationType.CREATE_USER)) + .build() + )) + .accessBasedSynchronisation(AccessBasedSynchronisation.NO_FILTERING) + .membershipAggregationEnabled(false) + .remoteAddresses(Collections.singletonList("127.0.0.1")) + .aliasingEnabled(true) + .lowercaseOutputEnabled(true) + .authenticationWithoutPasswordEnabled(true) + .build(); + + public static final ApplicationModel EXAMPLE_2 = ApplicationModel.builder() + .id(2L) + .name("app_name2") + .description("app_description2") + .active(false) + .type(ApplicationType.BAMBOO) + .password("3x4mpl32") + .cachedDirectoriesAuthenticationOrderOptimisationEnabled(true) + .directoryMappings(Collections.singletonList( + ApplicationDirectoryMapping.builder() + .directoryName("directory") + .authenticationAllowAll(false) + .authenticationGroups(Collections.singletonList("app_access2")) + .autoAssignmentGroups(Collections.singletonList("app_users2")) + .allowedOperations(Collections.singletonList(OperationType.CREATE_GROUP)) + .build() + )) + .accessBasedSynchronisation(AccessBasedSynchronisation.USER_AND_GROUP_FILTERING) + .membershipAggregationEnabled(true) + .remoteAddresses(Collections.singletonList("127.0.0.3")) + .aliasingEnabled(false) + .lowercaseOutputEnabled(false) + .authenticationWithoutPasswordEnabled(false) + .build(); - static { - EXAMPLE_2 = new ApplicationModel(); - EXAMPLE_2.setId(2L); - EXAMPLE_2.setName("app_name2"); - EXAMPLE_2.setDescription("app_description2"); - EXAMPLE_2.setActive(false); - EXAMPLE_2.setType(ApplicationType.BAMBOO); - EXAMPLE_2.setPassword("3x4mpl32"); - EXAMPLE_2.setCachedDirectoriesAuthenticationOrderOptimisationEnabled(true); - final ApplicationDirectoryMapping directoryMapping = new ApplicationDirectoryMapping(); - directoryMapping.setDirectoryName("directory"); - directoryMapping.setAuthenticationAllowAll(false); - directoryMapping.setAuthenticationGroups(Collections.singletonList("app_access2")); - directoryMapping.setAutoAssignmentGroups(Collections.singletonList("app_users2")); - directoryMapping.setAllowedOperations(Collections.singletonList(OperationType.CREATE_GROUP)); - EXAMPLE_2.setDirectoryMappings(Collections.singletonList(directoryMapping)); - EXAMPLE_2.setAccessBasedSynchronisation(AccessBasedSynchronisation.USER_AND_GROUP_FILTERING); - EXAMPLE_2.setMembershipAggregationEnabled(true); - EXAMPLE_2.setRemoteAddresses(Collections.singletonList("127.0.0.3")); - EXAMPLE_2.setAliasingEnabled(false); - EXAMPLE_2.setLowercaseOutputEnabled(false); - EXAMPLE_2.setAuthenticationWithoutPasswordEnabled(false); - } } diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java index 95f2dcc0..f8efd6d5 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java @@ -2,13 +2,13 @@ import com.deftdevs.bootstrapi.crowd.rest.api.MailTemplateResource; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = MailTemplateResource.MAIL_TEMPLATES) public class MailTemplatesModel { @@ -27,24 +27,20 @@ public class MailTemplatesModel { @XmlElement private String emailChangeInfo; - public static final MailTemplatesModel EXAMPLE_1; - public static final MailTemplatesModel EXAMPLE_2; - - static { - EXAMPLE_1 = new MailTemplatesModel(); - EXAMPLE_1.setForgottenPassword("Example1ForgottenPassword"); - EXAMPLE_1.setForgottenUsername("Example1ForgottenUsername"); - EXAMPLE_1.setPasswordExpirationReminder("Example1PasswordExpirationReminder"); - EXAMPLE_1.setEmailChangeValidation("Example1ValidationMessage"); - EXAMPLE_1.setEmailChangeInfo("Example1EmailChangeMessage"); - } - - static { - EXAMPLE_2 = new MailTemplatesModel(); - EXAMPLE_2.setForgottenPassword("Example2ForgottenPassword"); - EXAMPLE_2.setForgottenUsername("Example2ForgottenUsername"); - EXAMPLE_2.setPasswordExpirationReminder("Example2PasswordExpirationReminder"); - EXAMPLE_2.setEmailChangeValidation("Example2ValidationMessage"); - EXAMPLE_2.setEmailChangeInfo("Example2EmailChangeMessage"); - } + public static final MailTemplatesModel EXAMPLE_1 = MailTemplatesModel.builder() + .forgottenPassword("Example1ForgottenPassword") + .forgottenUsername("Example1ForgottenUsername") + .passwordExpirationReminder("Example1PasswordExpirationReminder") + .emailChangeValidation("Example1ValidationMessage") + .emailChangeInfo("Example1EmailChangeMessage") + .build(); + + public static final MailTemplatesModel EXAMPLE_2 = MailTemplatesModel.builder() + .forgottenPassword("Example2ForgottenPassword") + .forgottenUsername("Example2ForgottenUsername") + .passwordExpirationReminder("Example2PasswordExpirationReminder") + .emailChangeValidation("Example2ValidationMessage") + .emailChangeInfo("Example2EmailChangeMessage") + .build(); + } diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java index ffa77eb5..1edb715b 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java @@ -1,8 +1,8 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.crowd.rest.api.SessionConfigResource; -import lombok.Builder; import lombok.Data; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java index 53cb0c30..af7dc9f7 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java @@ -2,13 +2,13 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data -@NoArgsConstructor +@Builder @XmlRootElement(name = BootstrAPI.SETTINGS_BRANDING_LOGIN_PAGE) public class SettingsBrandingLoginPageModel { @@ -24,22 +24,18 @@ public class SettingsBrandingLoginPageModel { @XmlElement private String buttonColor; - public static final SettingsBrandingLoginPageModel EXAMPLE_1; - public static final SettingsBrandingLoginPageModel EXAMPLE_2; - - static { - EXAMPLE_1 = new SettingsBrandingLoginPageModel(); - EXAMPLE_1.setHeader("Default header"); - EXAMPLE_1.setContent("Default content"); - EXAMPLE_1.setShowLogo(false); - EXAMPLE_1.setButtonColor("#ffffff"); - } - - static { - EXAMPLE_2 = new SettingsBrandingLoginPageModel(); - EXAMPLE_2.setHeader("Example header"); - EXAMPLE_2.setContent("Example content"); - EXAMPLE_2.setShowLogo(true); - EXAMPLE_2.setButtonColor("#000000"); - } + public static final SettingsBrandingLoginPageModel EXAMPLE_1 = SettingsBrandingLoginPageModel.builder() + .header("Default header") + .content("Default content") + .showLogo(false) + .buttonColor("#ffffff") + .build(); + + public static final SettingsBrandingLoginPageModel EXAMPLE_2 = SettingsBrandingLoginPageModel.builder() + .header("Example header") + .content("Example content") + .showLogo(true) + .buttonColor("#000000") + .build(); + } diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java index c1808fa6..c7300390 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java @@ -4,6 +4,7 @@ import com.atlassian.crowd.exception.OperationFailedException; import com.atlassian.crowd.manager.application.DefaultGroupMembershipService; import com.atlassian.crowd.model.application.*; +import com.atlassian.crowd.embedded.api.OperationType; import com.deftdevs.bootstrapi.commons.exception.web.BadRequestException; import com.deftdevs.bootstrapi.commons.exception.web.InternalServerErrorException; import com.deftdevs.bootstrapi.crowd.model.ApplicationModel; @@ -19,7 +20,7 @@ public static ApplicationModel toApplicationModel( final Application application, final DefaultGroupMembershipService defaultGroupMembershipService) { - final ApplicationModel applicationModel = new ApplicationModel(); + final ApplicationModel applicationModel = ApplicationModel.builder().build(); applicationModel.setId(application.getId()); applicationModel.setName(application.getName()); @@ -191,27 +192,24 @@ static List toApplicationModelDire final List applicationModelDirectoryMappings = new ArrayList<>(); for (final ApplicationDirectoryMapping applicationDirectoryMapping : applicationDirectoryMappings) { - final ApplicationModel.ApplicationDirectoryMapping applicationModelDirectoryMapping = new ApplicationModel.ApplicationDirectoryMapping(); - applicationModelDirectoryMapping.setDirectoryName(applicationDirectoryMapping.getDirectory().getName()); - applicationModelDirectoryMapping.setAuthenticationAllowAll(applicationDirectoryMapping.isAllowAllToAuthenticate()); - - // if all directory users are allowed to authenticate, we don't return the unused list of groups that are allowed to do so, - // but instead we just return an empty list - if (!applicationDirectoryMapping.isAllowAllToAuthenticate()) { - applicationModelDirectoryMapping.setAuthenticationGroups(new ArrayList<>(applicationDirectoryMapping.getAuthorisedGroupNames())); - } else { - applicationModelDirectoryMapping.setAuthenticationGroups(Collections.emptyList()); - } - + List authenticationGroups = !applicationDirectoryMapping.isAllowAllToAuthenticate() + ? new ArrayList<>(applicationDirectoryMapping.getAuthorisedGroupNames()) + : Collections.emptyList(); + List autoAssignmentGroups; try { - applicationModelDirectoryMapping.setAutoAssignmentGroups(defaultGroupMembershipService.listAll(application, - applicationDirectoryMapping).stream().sorted().collect(Collectors.toList())); + autoAssignmentGroups = defaultGroupMembershipService.listAll(application, applicationDirectoryMapping) + .stream().sorted().collect(Collectors.toList()); } catch (OperationFailedException e) { throw new InternalServerErrorException(e); } - - applicationModelDirectoryMapping.setAllowedOperations(applicationDirectoryMapping.getAllowedOperations().stream().sorted().collect(Collectors.toList())); - + List allowedOperations = applicationDirectoryMapping.getAllowedOperations().stream().sorted().collect(Collectors.toList()); + ApplicationModel.ApplicationDirectoryMapping applicationModelDirectoryMapping = ApplicationModel.ApplicationDirectoryMapping.builder() + .directoryName(applicationDirectoryMapping.getDirectory().getName()) + .authenticationAllowAll(applicationDirectoryMapping.isAllowAllToAuthenticate()) + .authenticationGroups(authenticationGroups) + .autoAssignmentGroups(autoAssignmentGroups) + .allowedOperations(allowedOperations) + .build(); applicationModelDirectoryMappings.add(applicationModelDirectoryMapping); } diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/DirectoryModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/DirectoryModelUtil.java index 2d97032a..dee118c4 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/DirectoryModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/DirectoryModelUtil.java @@ -73,76 +73,80 @@ public static AbstractDirectoryModel toDirectoryModel( @Nonnull public static DirectoryInternalModel toDirectoryInternalModel( @Nonnull final Directory directory) { - - final DirectoryInternalModel directoryModel = new DirectoryInternalModel(); - setDirectoryModelDetails(directoryModel, directory); - final Map attributes = new HashMap<>(directory.getAttributes()); - directoryModel.setCredentialPolicy(new DirectoryInternalModel.DirectoryInternalCredentialPolicy()); - directoryModel.getCredentialPolicy().setPasswordRegex(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_REGEX)); - directoryModel.getCredentialPolicy().setPasswordComplexityMessage(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_COMPLEXITY_MESSAGE)); - directoryModel.getCredentialPolicy().setPasswordMaxAttempts(toLong(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_MAX_ATTEMPTS))); - directoryModel.getCredentialPolicy().setPasswordHistoryCount(toLong(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_HISTORY_COUNT))); - directoryModel.getCredentialPolicy().setPasswordMaxChangeTime(toLong(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME))); - directoryModel.getCredentialPolicy().setPasswordExpiryNotificationDays(toIntegerList(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_EXPIRATION_NOTIFICATION_PERIODS))); - directoryModel.getCredentialPolicy().setPasswordEncryptionMethod(attributes.get(AbstractInternalDirectory.ATTRIBUTE_USER_ENCRYPTION_METHOD)); - - directoryModel.setAdvanced(new DirectoryInternalModel.DirectoryInternalAdvanced()); - directoryModel.getAdvanced().setEnableNestedGroups(toBoolean(attributes.getOrDefault(ATTRIBUTE_USE_NESTED_GROUPS, "false"))); - - setDirectoryModelPermissions(directoryModel, directory); - - return directoryModel; + DirectoryInternalModel.DirectoryInternalCredentialPolicy credentialPolicy = DirectoryInternalModel.DirectoryInternalCredentialPolicy.builder() + .passwordRegex(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_REGEX)) + .passwordComplexityMessage(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_COMPLEXITY_MESSAGE)) + .passwordMaxAttempts(toLong(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_MAX_ATTEMPTS))) + .passwordHistoryCount(toLong(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_HISTORY_COUNT))) + .passwordMaxChangeTime(toLong(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_MAX_CHANGE_TIME))) + .passwordExpiryNotificationDays(toIntegerList(attributes.get(AbstractInternalDirectory.ATTRIBUTE_PASSWORD_EXPIRATION_NOTIFICATION_PERIODS))) + .passwordEncryptionMethod(attributes.get(AbstractInternalDirectory.ATTRIBUTE_USER_ENCRYPTION_METHOD)) + .build(); + + DirectoryInternalModel.DirectoryInternalAdvanced advanced = DirectoryInternalModel.DirectoryInternalAdvanced.builder() + .enableNestedGroups(toBoolean(attributes.getOrDefault(ATTRIBUTE_USE_NESTED_GROUPS, "false"))) + .build(); + + DirectoryInternalModel.DirectoryInternalModelBuilder builder = DirectoryInternalModel.builder(); + setDirectoryModelDetails(builder, directory); + setDirectoryModelPermissions(builder, directory); + return builder + .credentialPolicy(credentialPolicy) + .advanced(advanced) + .build(); } @Nonnull public static DirectoryDelegatingModel toDirectoryDelegatingModel( @Nonnull final Directory directory) { - - final DirectoryDelegatingModel directoryModel = new DirectoryDelegatingModel(); - setDirectoryModelDetails(directoryModel, directory); - - directoryModel.setConnector(new DirectoryDelegatingModel.DirectoryDelegatingConnector()); - directoryModel.getConnector().setType(toDirectoryDelegatingConnectorType(directory)); - directoryModel.getConnector().setUrl(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_URL_KEY)); - directoryModel.getConnector().setSsl(toDirectoryDelegatingConnectorSslType(directory)); - directoryModel.getConnector().setUseNodeReferrals(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_REFERRAL_KEY))); - directoryModel.getConnector().setNestedGroupsDisabled(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_NESTED_GROUPS_DISABLED))); - directoryModel.getConnector().setSynchronizeUsers(toBoolean(directory.getAttributes().get(DelegatedAuthenticationDirectory.ATTRIBUTE_CREATE_USER_ON_AUTH))); - directoryModel.getConnector().setSynchronizeUserDetails(toBoolean(directory.getAttributes().get(DelegatedAuthenticationDirectory.ATTRIBUTE_UPDATE_USER_ON_AUTH))); - directoryModel.getConnector().setSynchronizeGroupMemberships(toBoolean(directory.getAttributes().get(DelegatedAuthenticationDirectory.ATTRIBUTE_KEY_IMPORT_GROUPS))); - directoryModel.getConnector().setUseUserMembershipAttribute(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_USING_USER_MEMBERSHIP_ATTRIBUTE))); - directoryModel.getConnector().setUsePagedResults(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_PAGEDRESULTS_KEY))); - directoryModel.getConnector().setPagedResultsSize(toLong(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_PAGEDRESULTS_SIZE))); - directoryModel.getConnector().setReadTimeoutInMillis(toLong(directory.getAttributes().get(SynchronisableDirectoryProperties.READ_TIMEOUT_IN_MILLISECONDS))); - directoryModel.getConnector().setSearchTimeoutInMillis(toLong(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_SEARCH_TIMELIMIT))); - directoryModel.getConnector().setConnectionTimeoutInMillis(toLong(directory.getAttributes().get(SynchronisableDirectoryProperties.CONNECTION_TIMEOUT_IN_MILLISECONDS))); - directoryModel.getConnector().setBaseDn(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_BASEDN_KEY)); - directoryModel.getConnector().setUsername(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_USERDN_KEY)); - - directoryModel.setConfiguration(new DirectoryDelegatingModel.DirectoryDelegatingConfiguration()); - directoryModel.getConfiguration().setUserDn(directory.getAttributes().get(LDAPPropertiesMapper.USER_DN_ADDITION)); - directoryModel.getConfiguration().setUserObjectClass(directory.getAttributes().get(LDAPPropertiesMapper.USER_OBJECTCLASS_KEY)); - directoryModel.getConfiguration().setUserObjectFilter(directory.getAttributes().get(LDAPPropertiesMapper.USER_OBJECTFILTER_KEY)); - directoryModel.getConfiguration().setUserNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_USERNAME_KEY)); - directoryModel.getConfiguration().setUserNameRdnAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_USERNAME_RDN_KEY)); - directoryModel.getConfiguration().setUserFirstNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_FIRSTNAME_KEY)); - directoryModel.getConfiguration().setUserLastNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_LASTNAME_KEY)); - directoryModel.getConfiguration().setUserDisplayNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_DISPLAYNAME_KEY)); - directoryModel.getConfiguration().setUserEmailAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_EMAIL_KEY)); - directoryModel.getConfiguration().setUserGroupAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_GROUP_KEY)); - directoryModel.getConfiguration().setUserUniqueIdAttribute(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_EXTERNAL_ID)); - directoryModel.getConfiguration().setGroupDn(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_DN_ADDITION)); - directoryModel.getConfiguration().setGroupObjectClass(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_OBJECTCLASS_KEY)); - directoryModel.getConfiguration().setGroupObjectFilter(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_OBJECTFILTER_KEY)); - directoryModel.getConfiguration().setGroupNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_NAME_KEY)); - directoryModel.getConfiguration().setGroupDescriptionAttribute(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_DESCRIPTION_KEY)); - directoryModel.getConfiguration().setGroupMembersAttribute(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_USERNAMES_KEY)); - - setDirectoryModelPermissions(directoryModel, directory); - - return directoryModel; + DirectoryDelegatingModel.DirectoryDelegatingConnector connector = DirectoryDelegatingModel.DirectoryDelegatingConnector.builder() + .type(toDirectoryDelegatingConnectorType(directory)) + .url(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_URL_KEY)) + .ssl(toDirectoryDelegatingConnectorSslType(directory)) + .useNodeReferrals(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_REFERRAL_KEY))) + .nestedGroupsDisabled(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_NESTED_GROUPS_DISABLED))) + .synchronizeUsers(toBoolean(directory.getAttributes().get(DelegatedAuthenticationDirectory.ATTRIBUTE_CREATE_USER_ON_AUTH))) + .synchronizeUserDetails(toBoolean(directory.getAttributes().get(DelegatedAuthenticationDirectory.ATTRIBUTE_UPDATE_USER_ON_AUTH))) + .synchronizeGroupMemberships(toBoolean(directory.getAttributes().get(DelegatedAuthenticationDirectory.ATTRIBUTE_KEY_IMPORT_GROUPS))) + .useUserMembershipAttribute(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_USING_USER_MEMBERSHIP_ATTRIBUTE))) + .usePagedResults(toBoolean(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_PAGEDRESULTS_KEY))) + .pagedResultsSize(toLong(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_PAGEDRESULTS_SIZE))) + .readTimeoutInMillis(toLong(directory.getAttributes().get(SynchronisableDirectoryProperties.READ_TIMEOUT_IN_MILLISECONDS))) + .searchTimeoutInMillis(toLong(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_SEARCH_TIMELIMIT))) + .connectionTimeoutInMillis(toLong(directory.getAttributes().get(SynchronisableDirectoryProperties.CONNECTION_TIMEOUT_IN_MILLISECONDS))) + .baseDn(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_BASEDN_KEY)) + .username(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_USERDN_KEY)) + .build(); + + DirectoryDelegatingModel.DirectoryDelegatingConfiguration configuration = DirectoryDelegatingModel.DirectoryDelegatingConfiguration.builder() + .userDn(directory.getAttributes().get(LDAPPropertiesMapper.USER_DN_ADDITION)) + .userObjectClass(directory.getAttributes().get(LDAPPropertiesMapper.USER_OBJECTCLASS_KEY)) + .userObjectFilter(directory.getAttributes().get(LDAPPropertiesMapper.USER_OBJECTFILTER_KEY)) + .userNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_USERNAME_KEY)) + .userNameRdnAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_USERNAME_RDN_KEY)) + .userFirstNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_FIRSTNAME_KEY)) + .userLastNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_LASTNAME_KEY)) + .userDisplayNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_DISPLAYNAME_KEY)) + .userEmailAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_EMAIL_KEY)) + .userGroupAttribute(directory.getAttributes().get(LDAPPropertiesMapper.USER_GROUP_KEY)) + .userUniqueIdAttribute(directory.getAttributes().get(LDAPPropertiesMapper.LDAP_EXTERNAL_ID)) + .groupDn(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_DN_ADDITION)) + .groupObjectClass(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_OBJECTCLASS_KEY)) + .groupObjectFilter(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_OBJECTFILTER_KEY)) + .groupNameAttribute(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_NAME_KEY)) + .groupDescriptionAttribute(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_DESCRIPTION_KEY)) + .groupMembersAttribute(directory.getAttributes().get(LDAPPropertiesMapper.GROUP_USERNAMES_KEY)) + .build(); + + DirectoryDelegatingModel.DirectoryDelegatingModelBuilder builder = DirectoryDelegatingModel.builder(); + setDirectoryModelDetails(builder, directory); + setDirectoryModelPermissions(builder, directory); + return builder + .connector(connector) + .configuration(configuration) + .build(); } @Nonnull @@ -158,11 +162,9 @@ private static DirectoryDelegatingModel.DirectoryDelegatingConnector.SslType toD @Nonnull private static DirectoryGenericModel toDirectoryGenericModel( @Nonnull final Directory directory) { - - final DirectoryGenericModel directoryModel = new DirectoryGenericModel(); - setDirectoryModelDetails(directoryModel, directory); - - return directoryModel; + DirectoryGenericModel.DirectoryGenericModelBuilder builder = DirectoryGenericModel.builder(); + setDirectoryModelDetails(builder, directory); + return builder.build(); } /* @@ -239,49 +241,44 @@ public static Directory toDirectory( */ private static void setDirectoryModelDetails( - @Nonnull final AbstractDirectoryModel directoryModel, + @Nonnull final AbstractDirectoryModel.AbstractDirectoryModelBuilder builder, @Nonnull final Directory directory) { - - directoryModel.setId(directory.getId()); - directoryModel.setName(directory.getName()); - directoryModel.setDescription(directory.getDescription()); - directoryModel.setActive(directory.isActive()); - directoryModel.setCreatedDate(directory.getCreatedDate()); - directoryModel.setUpdatedDate(directory.getUpdatedDate()); + builder + .id(directory.getId()) + .name(directory.getName()) + .description(directory.getDescription()) + .active(directory.isActive()) + .createdDate(directory.getCreatedDate()) + .updatedDate(directory.getUpdatedDate()); } private static void setDirectoryModelPermissions( - @Nonnull final AbstractDirectoryModel directoryModel, + @Nonnull final AbstractDirectoryModel.AbstractDirectoryModelBuilder builder, @Nonnull final Directory directory) { - final DirectoryPermissions permissions = toDirectoryPermissions(directory); - - if (DirectoryInternalModel.class.equals(directoryModel.getClass())) { - DirectoryInternalModel directoryInternalModel = (DirectoryInternalModel) directoryModel; - directoryInternalModel.setPermissions(permissions); - } else if (DirectoryDelegatingModel.class.equals(directoryModel.getClass())) { - DirectoryDelegatingModel directoryDelegatingModel = (DirectoryDelegatingModel) directoryModel; - directoryDelegatingModel.setPermissions(permissions); + // Only set permissions if the builder supports it + if (builder instanceof DirectoryInternalModel.DirectoryInternalModelBuilder) { + ((DirectoryInternalModel.DirectoryInternalModelBuilder) builder).permissions(permissions); + } else if (builder instanceof DirectoryDelegatingModel.DirectoryDelegatingModelBuilder) { + ((DirectoryDelegatingModel.DirectoryDelegatingModelBuilder) builder).permissions(permissions); } + // else: DirectoryGenericModel does not have permissions } @Nonnull private static DirectoryPermissions toDirectoryPermissions( @Nonnull final Directory directory) { - final Set allowedOperations = directory.getAllowedOperations(); - - final DirectoryPermissions permissions = new DirectoryPermissions(); - permissions.setAddGroup(allowedOperations.contains(OperationType.CREATE_GROUP)); - permissions.setAddUser(allowedOperations.contains(OperationType.CREATE_USER)); - permissions.setModifyGroup(allowedOperations.contains(OperationType.UPDATE_GROUP)); - permissions.setModifyUser(allowedOperations.contains(OperationType.UPDATE_USER)); - permissions.setModifyGroupAttributes(allowedOperations.contains(OperationType.UPDATE_GROUP_ATTRIBUTE)); - permissions.setModifyUserAttributes(allowedOperations.contains(OperationType.UPDATE_USER_ATTRIBUTE)); - permissions.setRemoveGroup(allowedOperations.contains(OperationType.DELETE_GROUP)); - permissions.setRemoveUser(allowedOperations.contains(OperationType.DELETE_USER)); - - return permissions; + return DirectoryPermissions.builder() + .addGroup(allowedOperations.contains(OperationType.CREATE_GROUP)) + .addUser(allowedOperations.contains(OperationType.CREATE_USER)) + .modifyGroup(allowedOperations.contains(OperationType.UPDATE_GROUP)) + .modifyUser(allowedOperations.contains(OperationType.UPDATE_USER)) + .modifyGroupAttributes(allowedOperations.contains(OperationType.UPDATE_GROUP_ATTRIBUTE)) + .modifyUserAttributes(allowedOperations.contains(OperationType.UPDATE_USER_ATTRIBUTE)) + .removeGroup(allowedOperations.contains(OperationType.DELETE_GROUP)) + .removeUser(allowedOperations.contains(OperationType.DELETE_USER)) + .build(); } // There is no API from Crowd to get the connector type of a directory, diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/GroupModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/GroupModelUtil.java index 3949bc0e..6d6a64d3 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/GroupModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/GroupModelUtil.java @@ -17,12 +17,11 @@ public class GroupModelUtil { public static GroupModel toGroupModel( @Nonnull final Group group) { - final GroupModel groupModel = new GroupModel(); - groupModel.setName(group.getName()); - groupModel.setDescription(group.getDescription()); - groupModel.setActive(group.isActive()); - - return groupModel; + return GroupModel.builder() + .name(group.getName()) + .description(group.getDescription()) + .active(group.isActive()) + .build(); } private GroupModelUtil() { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/LicenseModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/LicenseModelUtil.java index 387cf2f6..afcb760b 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/LicenseModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/LicenseModelUtil.java @@ -13,15 +13,14 @@ public static LicenseModel toLicenseModel( List products = new ArrayList<>(); license.getProducts().forEach(product -> products.add(product.toString())); - final LicenseModel licenseModel = new LicenseModel(); - licenseModel.setProducts(products); - licenseModel.setMaxUsers(license.getMaximumNumberOfUsers()); - licenseModel.setExpiryDate(license.getExpiryDate()); - licenseModel.setDescription(license.getDescription()); - licenseModel.setOrganization(license.getOrganisation().toString()); - licenseModel.setType(license.getLicenseType().toString()); - - return licenseModel; + return LicenseModel.builder() + .products(products) + .maxUsers(license.getMaximumNumberOfUsers()) + .expiryDate(license.getExpiryDate()) + .description(license.getDescription()) + .organization(license.getOrganisation().toString()) + .type(license.getLicenseType().toString()) + .build(); } private LicenseModelUtil() { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java index 18704b71..22244a5c 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java @@ -20,7 +20,7 @@ public static MailServerSmtpModel toMailServerSmtpModel( return null; } - final MailServerSmtpModel mailServerSmtpModel = new MailServerSmtpModel(); + final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); if (mailConfiguration.getNotificationEmails() != null && !mailConfiguration.getNotificationEmails().isEmpty()) { mailServerSmtpModel.setAdminContact(mailConfiguration.getNotificationEmails().get(0)); diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/UserModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/UserModelUtil.java index e9375fdd..3eeec938 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/UserModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/UserModelUtil.java @@ -17,15 +17,14 @@ public class UserModelUtil { public static UserModel toUserModel( @Nonnull final User user) { - final UserModel userModel = new UserModel(); - userModel.setUsername(user.getName()); - userModel.setFirstName(user.getFirstName()); - userModel.setLastName(user.getLastName()); - userModel.setFullName(user.getDisplayName()); - userModel.setEmail(user.getEmailAddress()); - userModel.setActive(user.isActive()); - - return userModel; + return UserModel.builder() + .username(user.getName()) + .firstName(user.getFirstName()) + .lastName(user.getLastName()) + .fullName(user.getDisplayName()) + .email(user.getEmailAddress()) + .active(user.isActive()) + .build(); } private UserModelUtil() { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupResource.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupResource.java index d4ad5a3f..e7ed201d 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupResource.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupResource.java @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import javax.validation.constraints.NotNull; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupsResource.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupsResource.java index 1d3175c2..fd95ac01 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupsResource.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/GroupsResource.java @@ -8,7 +8,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import javax.validation.constraints.NotNull; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/MailTemplateResource.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/MailTemplateResource.java index 7c2aeb5c..0705a564 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/MailTemplateResource.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/MailTemplateResource.java @@ -16,7 +16,7 @@ public interface MailTemplateResource { - static final String MAIL_TEMPLATES = "mail-templates"; + String MAIL_TEMPLATES = "mail-templates"; @GET @Produces(MediaType.APPLICATION_JSON) diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/SessionConfigResource.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/SessionConfigResource.java index 70c84139..18e1b55d 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/SessionConfigResource.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/SessionConfigResource.java @@ -16,7 +16,7 @@ public interface SessionConfigResource { - static final String SESSION_CONFIG = "session-config"; + String SESSION_CONFIG = "session-config"; @GET @Produces(MediaType.APPLICATION_JSON) diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/TrustedProxiesResource.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/TrustedProxiesResource.java index deb6c6b5..935698a2 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/TrustedProxiesResource.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/rest/api/TrustedProxiesResource.java @@ -15,7 +15,7 @@ public interface TrustedProxiesResource { - static final String TRUSTED_PROXIES = "trusted-proxies"; + String TRUSTED_PROXIES = "trusted-proxies"; @GET @Produces(MediaType.APPLICATION_JSON) diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/DirectoriesServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/DirectoriesServiceImpl.java index 9026579c..f1ac334a 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/DirectoriesServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/DirectoriesServiceImpl.java @@ -21,7 +21,6 @@ import com.deftdevs.bootstrapi.crowd.service.api.GroupsService; import javax.annotation.Nonnull; -import javax.validation.constraints.NotNull; import java.util.ArrayList; import java.util.Comparator; import java.util.List; diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/LicensesServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/LicensesServiceImpl.java index e5ba9109..31a0d9cc 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/LicensesServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/LicensesServiceImpl.java @@ -35,9 +35,9 @@ public List setLicenses( licenseKeys.forEach(this::addLicense); - final LicenseModel licenseModel = new LicenseModel(); - licenseModel.setDescription(ERROR_MESSAGE); - return Collections.singletonList(licenseModel); + return Collections.singletonList( + LicenseModel.builder().description(ERROR_MESSAGE).build() + ); } public LicenseModel addLicense( @@ -50,9 +50,7 @@ public LicenseModel addLicense( throw new BadRequestException(e.getMessage()); } - final LicenseModel licenseModel = new LicenseModel(); - licenseModel.setDescription(ERROR_MESSAGE); - return licenseModel; + return LicenseModel.builder().description(ERROR_MESSAGE).build(); } } diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceImpl.java index de4588f8..21c6080f 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceImpl.java @@ -20,19 +20,17 @@ public MailTemplatesServiceImpl( @Override public MailTemplatesModel getMailTemplates() { - final MailTemplatesModel mailTemplatesModel = new MailTemplatesModel(); - try { - mailTemplatesModel.setForgottenPassword(propertyManager.getProperty(FORGOTTEN_PASSWORD_EMAIL_TEMPLATE)); - mailTemplatesModel.setForgottenUsername(propertyManager.getProperty(FORGOTTEN_USERNAME_EMAIL_TEMPLATE)); - mailTemplatesModel.setPasswordExpirationReminder(propertyManager.getProperty(PASSWORD_EXPIRATION_REMINDER_EMAIL_TEMPLATE)); - mailTemplatesModel.setEmailChangeValidation(propertyManager.getProperty(EMAIL_CHANGE_VALIDATION_EMAIL_TEMPLATE)); - mailTemplatesModel.setEmailChangeInfo(propertyManager.getProperty(EMAIL_CHANGE_INFO_EMAIL_TEMPLATE)); + return MailTemplatesModel.builder() + .forgottenPassword(propertyManager.getProperty(FORGOTTEN_PASSWORD_EMAIL_TEMPLATE)) + .forgottenUsername(propertyManager.getProperty(FORGOTTEN_USERNAME_EMAIL_TEMPLATE)) + .passwordExpirationReminder(propertyManager.getProperty(PASSWORD_EXPIRATION_REMINDER_EMAIL_TEMPLATE)) + .emailChangeValidation(propertyManager.getProperty(EMAIL_CHANGE_VALIDATION_EMAIL_TEMPLATE)) + .emailChangeInfo(propertyManager.getProperty(EMAIL_CHANGE_INFO_EMAIL_TEMPLATE)) + .build(); } catch (final ObjectNotFoundException e) { throw new NotFoundException(e.getMessage()); } - - return mailTemplatesModel; } @Override diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java index f5e0cb70..97dd4bd1 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java @@ -10,7 +10,6 @@ import com.deftdevs.bootstrapi.crowd.service.api.CrowdSettingsBrandingService; import org.apache.commons.io.FileUtils; -import javax.validation.constraints.NotNull; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -33,7 +32,7 @@ public SettingsBrandingServiceImpl( @Override public SettingsBrandingLoginPageModel getLoginPage() { - final SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = new SettingsBrandingLoginPageModel(); + final SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = SettingsBrandingLoginPageModel.builder().build(); LookAndFeelConfiguration lookAndFeelConfiguration = getLookAndFeelConfiguration(); settingsBrandingLoginPageModel.setHeader(lookAndFeelConfiguration.getHeader()); @@ -113,7 +112,7 @@ private ImageInfo getImageInfo(InputStream inputStream) { String extension = contentType.split("/")[1]; if (!allowedTypes.contains(extension)) { - throw new BadRequestException("The content type must be one of: " + allowedTypes.toString()); + throw new BadRequestException("The content type must be one of: " + allowedTypes); } byte[] fileContent = Files.readAllBytes(file.toPath()); diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java index 43aeb755..39450547 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java @@ -19,7 +19,7 @@ public SettingsServiceImpl( @Override public SettingsModel getSettingsGeneral() { - SettingsModel settingsModel = new SettingsModel(); + SettingsModel settingsModel = SettingsModel.builder().build(); try { settingsModel.setBaseUrl(propertyManager.getBaseUrl()); settingsModel.setTitle(propertyManager.getDeploymentTitle()); diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/util/AttributeUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/util/AttributeUtil.java index 38c6d90b..9534a860 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/util/AttributeUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/util/AttributeUtil.java @@ -2,7 +2,6 @@ import javax.annotation.Nullable; import java.util.List; -import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java index 3f66eb6b..48224ef7 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java @@ -123,7 +123,7 @@ public void testAddApplicationEnsurePersistenceCalls() throws InvalidCredentialE @Test public void testSetApplicationAllAttributes() throws ApplicationNotFoundException, ApplicationManagerException { Application application1 = toApplication(EXAMPLE_1); - ApplicationModel requestApplicationModel = new ApplicationModel(); + ApplicationModel requestApplicationModel = ApplicationModel.builder().build(); requestApplicationModel.setId(application1.getId()); requestApplicationModel.setName("Changed Name"); requestApplicationModel.setDescription("Changed Description"); @@ -154,7 +154,7 @@ public void testSetApplicationNoAttributes() throws ApplicationNotFoundException Application application = toApplication(EXAMPLE_1); doReturn(application).when(applicationManager).findById(anyLong()); doReturn(application).when(applicationManager).update(any(Application.class)); - ApplicationModel requestApplicationModel = new ApplicationModel(); + ApplicationModel requestApplicationModel = ApplicationModel.builder().build(); final ArgumentCaptor applicationCaptor = ArgumentCaptor.forClass(Application.class); applicationsService.setApplication(100, requestApplicationModel); diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/CrowdSettingsBrandingServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/CrowdSettingsBrandingServiceTest.java index 5d6e8ffc..db0dc214 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/CrowdSettingsBrandingServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/CrowdSettingsBrandingServiceTest.java @@ -88,7 +88,7 @@ public void setLoginPage() throws PropertyManagerException { @Test public void setLoginPageDefaultConfig() throws PropertyManagerException { - SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = new SettingsBrandingLoginPageModel(); + SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = SettingsBrandingLoginPageModel.builder().build(); LookAndFeelConfiguration lookAndFeelConfiguration = getLookAndFeelConfiguration(SettingsBrandingLoginPageModel.EXAMPLE_1); Optional lookAndFeelConfigurationOptional = Optional.of(lookAndFeelConfiguration); @@ -109,7 +109,7 @@ public void setLoginPageDefaultConfig() throws PropertyManagerException { @Test public void setLoginPageBadRequestException() throws PropertyManagerException { - SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = new SettingsBrandingLoginPageModel(); + SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = SettingsBrandingLoginPageModel.builder().build(); LookAndFeelConfiguration lookAndFeelConfiguration = getLookAndFeelConfiguration(SettingsBrandingLoginPageModel.EXAMPLE_2); Optional lookAndFeelConfigurationOptional = Optional.of(lookAndFeelConfiguration); diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/GroupsServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/GroupsServiceTest.java index 2d891b21..75008416 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/GroupsServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/GroupsServiceTest.java @@ -145,8 +145,7 @@ public void testUpdateGroupNoOp() throws Exception { final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName(group.getName()); + final GroupModel groupModel = GroupModel.builder().name(group.getName()).build(); groupsService.updateGroup(group.getDirectoryId(), group.getName(), groupModel); verify(directoryManager, never()).renameGroup(anyLong(), anyString(), anyString()); @@ -344,8 +343,7 @@ public void testRenameGroupDirectoryPermissionException() throws Exception { final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName("new_group_name"); + final GroupModel groupModel = GroupModel.builder().name("new_group_name").build(); doThrow(new DirectoryPermissionException()).when(directoryManager).renameGroup(anyLong(), anyString(), anyString()); @@ -359,8 +357,7 @@ public void testRenameGroupDirectoryPermissionExceptionAnyDirectory() throws Exc final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName("new_group_name"); + final GroupModel groupModel = GroupModel.builder().name("new_group_name").build(); doThrow(new DirectoryPermissionException()).when(directoryManager).renameGroup(anyLong(), anyString(), anyString()); @@ -374,8 +371,7 @@ public void testRenameGroupInvalidGroupException() throws Exception { final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName("new_group_name"); + final GroupModel groupModel = GroupModel.builder().name("new_group_name").build(); doThrow(new InvalidGroupException(group, "message")).when(directoryManager).renameGroup(anyLong(), anyString(), anyString()); @@ -389,8 +385,7 @@ public void testRenameGroupInvalidGroupExceptionAnyDirectory() throws Exception final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName("new_group_name"); + final GroupModel groupModel = GroupModel.builder().name("new_group_name").build(); doThrow(new InvalidGroupException(group, "message")).when(directoryManager).renameGroup(anyLong(), anyString(), anyString()); @@ -404,8 +399,7 @@ public void testRenameGroupOperationFailedException() throws Exception { final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName("new_group_name"); + final GroupModel groupModel = GroupModel.builder().name("new_group_name").build(); doThrow(new OperationFailedException()).when(directoryManager).renameGroup(anyLong(), anyString(), anyString()); @@ -419,8 +413,7 @@ public void testRenameGroupOperationFailedExceptionAnyDirectory() throws Excepti final Group group = getTestGroup(); doReturn(group).when(directoryManager).findGroupByName(group.getDirectoryId(), group.getName()); - final GroupModel groupModel = new GroupModel(); - groupModel.setName("new_group_name"); + final GroupModel groupModel = GroupModel.builder().name("new_group_name").build(); doThrow(new OperationFailedException()).when(directoryManager).renameGroup(anyLong(), anyString(), anyString()); diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailServerServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailServerServiceTest.java index ae685d95..f3e37435 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailServerServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailServerServiceTest.java @@ -49,7 +49,7 @@ public void testSetMailServerSmtpDefault() { final MailConfiguration emptyMailConfiguration = MailConfiguration.builder().build(); doReturn(emptyMailConfiguration).when(mailConfigurationService).getMailConfiguration(); - final MailServerSmtpModel mailServerSmtpModel = new MailServerSmtpModel(); + final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); mailServerService.setMailServerSmtp(mailServerSmtpModel); final ArgumentCaptor mailConfigurationCaptor = ArgumentCaptor.forClass(MailConfiguration.class); diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java index 4bbb68b4..baf1fabb 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java @@ -71,7 +71,7 @@ public void testGetMailTemplates() { @Test public void testSetMailTemplates() { - final MailTemplatesModel inputMailTemplatesModel = new MailTemplatesModel(); + final MailTemplatesModel inputMailTemplatesModel = MailTemplatesModel.builder().build(); inputMailTemplatesModel.setForgottenPassword("1"); inputMailTemplatesModel.setForgottenUsername("2"); inputMailTemplatesModel.setPasswordExpirationReminder("3"); diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/UsersServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/UsersServiceTest.java index 492ec856..8849361f 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/UsersServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/UsersServiceTest.java @@ -255,12 +255,13 @@ public void testUpdateUser() throws CrowdException, PermissionException { // return the same user as the one we are updating doAnswer(invocation -> invocation.getArguments()[1]).when(directoryManager).updateUser(anyLong(), any()); - final UserModel userModel = new UserModel(); - userModel.setFirstName("Other"); - userModel.setLastName("Full Name"); - userModel.setFullName("Other Full Name"); - userModel.setEmail("other@example.com"); - userModel.setActive(false); + final UserModel userModel = UserModel.builder() + .firstName("Other") + .lastName("Full Name") + .fullName("Other Full Name") + .email("other@example.com") + .active(false) + .build(); final ArgumentCaptor userTemplateArgumentCaptor = ArgumentCaptor.forClass(UserTemplate.class); usersService.updateUser(user.getDirectoryId(), user.getName(), userModel); @@ -292,8 +293,7 @@ public void testUpdateUserNoOp() throws CrowdException, PermissionException { final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername(user.getName()); + final UserModel userModel = UserModel.builder().username(user.getName()).build(); usersService.updateUser(user.getDirectoryId(), user.getName(), userModel); verify(directoryManager, never()).renameUser(anyLong(), anyString(), anyString()); @@ -318,12 +318,13 @@ public void testUpdateUserAnyDirectory() throws CrowdException, PermissionExcept doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); doAnswer(invocation -> invocation.getArguments()[1]).when(directoryManager).updateUser(anyLong(), any()); - final UserModel userModel = new UserModel(); - userModel.setFirstName("Other"); - userModel.setLastName("Full Name"); - userModel.setFullName("Other Full Name"); - userModel.setEmail("other@example.com"); - userModel.setActive(false); + final UserModel userModel = UserModel.builder() + .firstName("Other") + .lastName("Full Name") + .fullName("Other Full Name") + .email("other@example.com") + .active(false) + .build(); final ArgumentCaptor userTemplateArgumentCaptor = ArgumentCaptor.forClass(UserTemplate.class); usersService.updateUser(user.getName(), userModel); @@ -341,8 +342,7 @@ public void testUpdateUserAnyDirectoryWithRename() throws CrowdException, Permis doReturn(Collections.singletonList(getTestDirectory())).when(directoryManager).searchDirectories(any()); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doReturn(user).when(directoryManager).renameUser(user.getDirectoryId(), user.getName(), userModel.getUsername()); usersService.updateUser(user.getName(), userModel); @@ -356,8 +356,7 @@ public void testUpdateUserAnyDirectoryNoOp() throws CrowdException, PermissionEx doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); // Just setting the same username and nothing else should not trigger any update - final UserModel userModel = new UserModel(); - userModel.setUsername(user.getName()); + final UserModel userModel = UserModel.builder().username(user.getName()).build(); usersService.updateUser(user.getName(), userModel); verify(directoryManager, never()).renameUser(anyLong(), anyString(), anyString()); @@ -370,8 +369,7 @@ public void testUpdateUserAnyDirectoryWithPassword() throws CrowdException, Perm final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setPassword("s3cr3t"); + final UserModel userModel = UserModel.builder().password("s3cr3t").build(); final ArgumentCaptor passwordCredentialArgumentCaptor = ArgumentCaptor.forClass(PasswordCredential.class); usersService.updateUser(user.getName(), userModel); @@ -473,8 +471,7 @@ public void testRenameUserDirectoryPermissionException() throws CrowdException, final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new DirectoryPermissionException()).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -488,8 +485,7 @@ public void testRenameUserDirectoryPermissionExceptionAnyDirectory() throws Crow final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new DirectoryPermissionException()).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -503,8 +499,7 @@ public void testRenameUserUserAlreadyExistsException() throws CrowdException, Pe final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new UserAlreadyExistsException(user.getDirectoryId(), userModel.getUsername())).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -518,8 +513,7 @@ public void testRenameUserUserAlreadyExistsExceptionAnyDirectory() throws CrowdE final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new UserAlreadyExistsException(user.getDirectoryId(), userModel.getUsername())).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -533,8 +527,7 @@ public void testRenameUserInvalidUserException() throws CrowdException, Permissi final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new InvalidUserException(user, "message")).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -548,8 +541,7 @@ public void testRenameUserInvalidUserExceptionAnyDirectory() throws CrowdExcepti final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new InvalidUserException(user, "message")).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -563,8 +555,7 @@ public void testRenameUserOperationFailedException() throws CrowdException, Perm final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new OperationFailedException()).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -578,8 +569,7 @@ public void testRenameUserOperationFailedExceptionAnyDirectory() throws CrowdExc final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setUsername("new_username"); + final UserModel userModel = UserModel.builder().username("new_username").build(); doThrow(new OperationFailedException()).when(directoryManager).renameUser(anyLong(), anyString(), anyString()); @@ -593,8 +583,7 @@ public void testUpdateUserDirectoryPermissionException() throws CrowdException, final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setFullName("Other Full Name"); + final UserModel userModel = UserModel.builder().fullName("Other Full Name").build(); doThrow(new DirectoryPermissionException()).when(directoryManager).updateUser(anyLong(), any()); @@ -606,8 +595,7 @@ public void testUpdateUserDirectoryPermissionException() throws CrowdException, @Test public void testUpdateUserNotFoundExceptionAnyDirectory() throws CrowdException { final User user = getTestUser(); - final UserModel userModel = new UserModel(); - userModel.setFullName("Other Full Name"); + final UserModel userModel = UserModel.builder().fullName("Other Full Name").build(); assertThrows(WebApplicationException.class, () -> { usersService.updateUser(user.getName(), userModel); @@ -619,8 +607,7 @@ public void testUpdateUserDirectoryPermissionExceptionAnyDirectory() throws Crow final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setFullName("Other Full Name"); + final UserModel userModel = UserModel.builder().fullName("Other Full Name").build(); doThrow(new DirectoryPermissionException()).when(directoryManager).updateUser(anyLong(), any()); @@ -634,8 +621,7 @@ public void testUpdateUserInvalidUserException() throws CrowdException, Permissi final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setFullName("Other Full Name"); + final UserModel userModel = UserModel.builder().fullName("Other Full Name").build(); doThrow(new InvalidUserException(user, "message")).when(directoryManager).updateUser(anyLong(), any()); @@ -649,8 +635,7 @@ public void testUpdateUserInvalidUserExceptionAnyDirectory() throws CrowdExcepti final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setFullName("Other Full Name"); + final UserModel userModel = UserModel.builder().fullName("Other Full Name").build(); doThrow(new InvalidUserException(user, "message")).when(directoryManager).updateUser(anyLong(), any()); @@ -664,8 +649,7 @@ public void testUpdateUserOperationFailedException() throws CrowdException, Perm final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setEmail("other@example.com"); + final UserModel userModel = UserModel.builder().email("other@example.com").build(); doThrow(new OperationFailedException()).when(directoryManager).updateUser(anyLong(), any()); @@ -679,8 +663,7 @@ public void testUpdateUserOperationFailedExceptionAnyDirectory() throws CrowdExc final User user = getTestUser(); doReturn(user).when(directoryManager).findUserByName(user.getDirectoryId(), user.getName()); - final UserModel userModel = new UserModel(); - userModel.setEmail("other@example.com"); + final UserModel userModel = UserModel.builder().email("other@example.com").build(); doThrow(new OperationFailedException()).when(directoryManager).updateUser(anyLong(), any()); diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java index c69cfe07..5a678a45 100644 --- a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java @@ -7,7 +7,7 @@ public class SettingsResourceFuncTest extends AbstractSettingsResourceFuncTest { @Override protected SettingsModel getExampleModel() { - final SettingsModel settingsModel = new SettingsModel(); + final SettingsModel settingsModel = SettingsModel.builder().build(); settingsModel.setBaseUrl(SettingsModel.EXAMPLE_1.getBaseUrl()); settingsModel.setTitle(SettingsModel.EXAMPLE_1.getTitle()); return settingsModel; diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java index ee3868c4..3d4a31cc 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java @@ -1,9 +1,7 @@ package com.deftdevs.bootstrapi.jira.model; -import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.Builder; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -15,8 +13,6 @@ @Data @Builder -@NoArgsConstructor -@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_BANNER) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsBannerModel { diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtil.java index 13b38450..b72dfcfb 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtil.java @@ -75,40 +75,48 @@ public static AbstractDirectoryModel toDirectoryModel( final AbstractDirectoryModel directoryModel; if (DirectoryType.CROWD.equals(directory.getType())) { - - DirectoryCrowdModel.DirectoryCrowdServer serverModel = new DirectoryCrowdModel.DirectoryCrowdServer(); - serverModel.setUrl(URI.create(attributes.get(CROWD_SERVER_URL))); + DirectoryCrowdModel.DirectoryCrowdServer.DirectoryCrowdServerProxy proxy = null; if (attributes.containsKey(CROWD_HTTP_PROXY_HOST)) { - DirectoryCrowdModel.DirectoryCrowdServer.DirectoryCrowdServerProxy proxy = new DirectoryCrowdModel.DirectoryCrowdServer.DirectoryCrowdServerProxy(); - proxy.setUsername(attributes.get(CROWD_HTTP_PROXY_USERNAME)); - proxy.setHost(attributes.get(CROWD_HTTP_PROXY_HOST)); - if (attributes.get(CROWD_HTTP_PROXY_PORT) != null) { - proxy.setPort(Integer.valueOf(attributes.get(CROWD_HTTP_PROXY_PORT))); - } - serverModel.setProxy(proxy); + proxy = DirectoryCrowdModel.DirectoryCrowdServer.DirectoryCrowdServerProxy.builder() + .username(attributes.get(CROWD_HTTP_PROXY_USERNAME)) + .host(attributes.get(CROWD_HTTP_PROXY_HOST)) + .port(attributes.get(CROWD_HTTP_PROXY_PORT) != null ? Integer.valueOf(attributes.get(CROWD_HTTP_PROXY_PORT)) : null) + .password(attributes.get(CROWD_HTTP_PROXY_PASSWORD)) + .build(); } - serverModel.setConnectionTimeoutInMillis(toLong(attributes.get(CROWD_HTTP_TIMEOUT))); - serverModel.setMaxConnections(toInt(attributes.get(CROWD_HTTP_MAX_CONNECTIONS))); - serverModel.setAppUsername(attributes.get(APPLICATION_NAME)); + DirectoryCrowdModel.DirectoryCrowdServer serverModel = DirectoryCrowdModel.DirectoryCrowdServer.builder() + .url(URI.create(attributes.get(CROWD_SERVER_URL))) + .proxy(proxy) + .connectionTimeoutInMillis(toLong(attributes.get(CROWD_HTTP_TIMEOUT))) + .maxConnections(toInt(attributes.get(CROWD_HTTP_MAX_CONNECTIONS))) + .appUsername(attributes.get(APPLICATION_NAME)) + .appPassword(attributes.get(APPLICATION_PASSWORD)) + .build(); - DirectoryCrowdModel.DirectoryCrowdAdvanced advanced = new DirectoryCrowdModel.DirectoryCrowdAdvanced(); - advanced.setEnableIncrementalSync(toBoolean(attributes.get(INCREMENTAL_SYNC_ENABLED))); - advanced.setEnableNestedGroups(toBoolean(attributes.get(ATTRIBUTE_KEY_USE_NESTED_GROUPS))); - advanced.setUpdateSyncIntervalInMinutes(toInt(attributes.get(CACHE_SYNCHRONISE_INTERVAL))); + DirectoryCrowdModel.DirectoryCrowdAdvanced advanced = DirectoryCrowdModel.DirectoryCrowdAdvanced.builder() + .enableIncrementalSync(toBoolean(attributes.get(INCREMENTAL_SYNC_ENABLED))) + .enableNestedGroups(toBoolean(attributes.get(ATTRIBUTE_KEY_USE_NESTED_GROUPS))) + .updateSyncIntervalInMinutes(toInt(attributes.get(CACHE_SYNCHRONISE_INTERVAL))) + .updateGroupMembershipMethod(attributes.get(SYNC_GROUP_MEMBERSHIP_AFTER_SUCCESSFUL_USER_AUTH_ENABLED)) + .build(); - DirectoryCrowdModel directoryCrowdModel = new DirectoryCrowdModel(); - directoryCrowdModel.setServer(serverModel); - directoryCrowdModel.setAdvanced(advanced); + DirectoryCrowdModel directoryCrowdModel = DirectoryCrowdModel.builder() + .server(serverModel) + .advanced(advanced) + .name(directory.getName()) + .active(directory.isActive()) + .description(directory.getDescription()) + .id(directory.getId()) + .build(); directoryModel = directoryCrowdModel; - } else { - directoryModel = new DirectoryGenericModel(); + directoryModel = DirectoryGenericModel.builder() + .name(directory.getName()) + .active(directory.isActive()) + .description(directory.getDescription()) + .id(directory.getId()) + .build(); } - - directoryModel.setName(directory.getName()); - directoryModel.setActive(directory.isActive()); - directoryModel.setDescription(directory.getDescription()); - directoryModel.setId(directory.getId()); return directoryModel; } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/LicenseModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/LicenseModelUtil.java index 115bb52f..c1ae4900 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/LicenseModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/LicenseModelUtil.java @@ -18,20 +18,16 @@ public class LicenseModelUtil { public static LicenseModel toLicenseModel( @Nonnull final LicenseDetails licenseDetails) { - final LicenseModel licenseModel = new LicenseModel(); - - licenseModel.setProducts(licenseDetails.getLicensedApplications().getKeys().stream() + final LicenseModel licenseModel = LicenseModel.builder() + .products(licenseDetails.getLicensedApplications().getKeys().stream() .map(ApplicationKey::value) - .collect(Collectors.toList())); - - if (licenseDetails.getLicenseType() != null) { - licenseModel.setType(licenseDetails.getLicenseType().name()); - } - - licenseModel.setOrganization(licenseDetails.getOrganisation()); - licenseModel.setDescription(licenseDetails.getDescription()); - licenseModel.setExpiryDate(licenseDetails.getMaintenanceExpiryDate()); - // cannot set max users with license details + .collect(Collectors.toList())) + .type(licenseDetails.getLicenseType() != null ? licenseDetails.getLicenseType().name() : null) + .organization(licenseDetails.getOrganisation()) + .description(licenseDetails.getDescription()) + .expiryDate(licenseDetails.getMaintenanceExpiryDate()) + // cannot set max users with license details + .build(); return licenseModel; } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerPopModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerPopModelUtil.java index 61544f63..c94ea822 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerPopModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerPopModelUtil.java @@ -15,14 +15,15 @@ public static MailServerPopModel toMailServerPopModel( return null; } - final MailServerPopModel mailServerPopModel = new MailServerPopModel(); - mailServerPopModel.setName(popMailServer.getName()); - mailServerPopModel.setDescription(popMailServer.getDescription()); - mailServerPopModel.setProtocol(popMailServer.getMailProtocol().getProtocol()); - mailServerPopModel.setHost(popMailServer.getHostname()); - mailServerPopModel.setPort(popMailServer.getPort()); - mailServerPopModel.setTimeout(popMailServer.getTimeout()); - mailServerPopModel.setUsername(popMailServer.getUsername()); + final MailServerPopModel mailServerPopModel = MailServerPopModel.builder() + .name(popMailServer.getName()) + .description(popMailServer.getDescription()) + .protocol(popMailServer.getMailProtocol() != null ? popMailServer.getMailProtocol().getProtocol() : null) + .host(popMailServer.getHostname()) + .port(popMailServer.getPort() != null ? Integer.valueOf(popMailServer.getPort()) : null) + .timeout(popMailServer.getTimeout()) + .username(popMailServer.getUsername()) + .build(); return mailServerPopModel; } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerSmtpModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerSmtpModelUtil.java index 920b3307..a37b910c 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerSmtpModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/MailServerSmtpModelUtil.java @@ -15,7 +15,7 @@ public static MailServerSmtpModel toMailServerSmtpModel( return null; } - final MailServerSmtpModel mailServerSmtpModel = new MailServerSmtpModel(); + final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); mailServerSmtpModel.setName(smtpMailServer.getName()); mailServerSmtpModel.setDescription(smtpMailServer.getDescription()); mailServerSmtpModel.setFrom(smtpMailServer.getDefaultFrom()); diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/PermissionsGlobalModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/PermissionsGlobalModelUtil.java index 82a269eb..0c520512 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/PermissionsGlobalModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/PermissionsGlobalModelUtil.java @@ -24,12 +24,9 @@ public static PermissionsGlobalModel toPermissionsGlobalModel( groupGlobalPermissions.get(group).add(globalPermission.getPermissionKey()); } - final PermissionsGlobalModel permissionsGlobalModel = new PermissionsGlobalModel(); - - if (!groupGlobalPermissions.isEmpty()) { - permissionsGlobalModel.setGroupPermissions(groupGlobalPermissions); - } - + final PermissionsGlobalModel permissionsGlobalModel = PermissionsGlobalModel.builder() + .groupPermissions(!groupGlobalPermissions.isEmpty() ? groupGlobalPermissions : null) + .build(); return permissionsGlobalModel; } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/SettingsBrandingColorSchemeModelUtil.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/SettingsBrandingColorSchemeModelUtil.java index f499e2e7..40861310 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/SettingsBrandingColorSchemeModelUtil.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/util/SettingsBrandingColorSchemeModelUtil.java @@ -19,24 +19,21 @@ public class SettingsBrandingColorSchemeModelUtil { @NotNull public static SettingsBrandingColorSchemeModel getSettingsBrandingColorSchemeModel( final ApplicationProperties applicationProperties) { - - final SettingsBrandingColorSchemeModel schemeModel = new SettingsBrandingColorSchemeModel(); Map propertyMap = applicationProperties.asMap(); - - schemeModel.setTopBar(propertyMap.get(APKeys.JIRA_LF_TOP_BGCOLOUR).toString()); - schemeModel.setTopBarMenuItemText(propertyMap.get(APKeys.JIRA_LF_MENU_TEXTCOLOUR).toString()); - schemeModel.setTopBarMenuSelectedBackground(propertyMap.get(APKeys.JIRA_LF_TOP_HIGHLIGHTCOLOR).toString()); - schemeModel.setTopBarMenuSelectedText(propertyMap.get(APKeys.JIRA_LF_TOP_TEXTHIGHLIGHTCOLOR).toString()); - schemeModel.setTopBarText(propertyMap.get(APKeys.JIRA_LF_TOP_TEXTCOLOUR).toString()); - schemeModel.setBordersAndDividers(propertyMap.get(APKeys.JIRA_LF_TOP_SEPARATOR_BGCOLOR).toString()); - schemeModel.setHeaderButtonBackground(propertyMap.get(APKeys.JIRA_LF_HERO_BUTTON_BASEBGCOLOUR).toString()); - schemeModel.setHeaderButtonText(propertyMap.get(APKeys.JIRA_LF_HERO_BUTTON_TEXTCOLOUR).toString()); - schemeModel.setHeadingText(propertyMap.get(APKeys.JIRA_LF_TEXT_HEADINGCOLOUR).toString()); - schemeModel.setLinks(propertyMap.get(APKeys.JIRA_LF_TEXT_LINKCOLOUR).toString()); - schemeModel.setMenuItemSelectedBackground(propertyMap.get(APKeys.JIRA_LF_MENU_BGCOLOUR).toString()); - schemeModel.setMenuItemSelectedText(propertyMap.get(APKeys.JIRA_LF_MENU_TEXTCOLOUR).toString()); - - return schemeModel; + return SettingsBrandingColorSchemeModel.builder() + .topBar(propertyMap.get(APKeys.JIRA_LF_TOP_BGCOLOUR).toString()) + .topBarMenuItemText(propertyMap.get(APKeys.JIRA_LF_MENU_TEXTCOLOUR).toString()) + .topBarMenuSelectedBackground(propertyMap.get(APKeys.JIRA_LF_TOP_HIGHLIGHTCOLOR).toString()) + .topBarMenuSelectedText(propertyMap.get(APKeys.JIRA_LF_TOP_TEXTHIGHLIGHTCOLOR).toString()) + .topBarText(propertyMap.get(APKeys.JIRA_LF_TOP_TEXTCOLOUR).toString()) + .bordersAndDividers(propertyMap.get(APKeys.JIRA_LF_TOP_SEPARATOR_BGCOLOR).toString()) + .headerButtonBackground(propertyMap.get(APKeys.JIRA_LF_HERO_BUTTON_BASEBGCOLOUR).toString()) + .headerButtonText(propertyMap.get(APKeys.JIRA_LF_HERO_BUTTON_TEXTCOLOUR).toString()) + .headingText(propertyMap.get(APKeys.JIRA_LF_TEXT_HEADINGCOLOUR).toString()) + .links(propertyMap.get(APKeys.JIRA_LF_TEXT_LINKCOLOUR).toString()) + .menuItemSelectedBackground(propertyMap.get(APKeys.JIRA_LF_MENU_BGCOLOUR).toString()) + .menuItemSelectedText(propertyMap.get(APKeys.JIRA_LF_MENU_TEXTCOLOUR).toString()) + .build(); } /** diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceImpl.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceImpl.java index d024bf37..220c292e 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceImpl.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceImpl.java @@ -72,7 +72,7 @@ public List setDirectories( } else { throw new BadRequestException(format("Updating directory type '%s' is not supported (yet)", directoryRequestModel.getClass())); } - }; + } return getDirectories(); } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceImpl.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceImpl.java index 8ab93ac5..961a3437 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceImpl.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceImpl.java @@ -29,15 +29,19 @@ public SettingsServiceImpl( @Override public SettingsModel getSettingsGeneral() { - final SettingsModel settingsModel = new SettingsModel(); final String baseUrl = applicationProperties.getString(JIRA_BASEURL); - if (baseUrl != null) { - settingsModel.setBaseUrl(URI.create(baseUrl)); - } - settingsModel.setMode(applicationProperties.getString(JIRA_MODE)); - settingsModel.setTitle(applicationProperties.getString(JIRA_TITLE)); - settingsModel.setContactMessage(applicationProperties.getString(JIRA_CONTACT_ADMINISTRATORS_MESSSAGE)); - settingsModel.setExternalUserManagement(Boolean.parseBoolean(applicationProperties.getString(JIRA_OPTION_USER_EXTERNALMGT))); + final String mode = applicationProperties.getString(JIRA_MODE); + final String title = applicationProperties.getString(JIRA_TITLE); + final String contactMessage = applicationProperties.getString(JIRA_CONTACT_ADMINISTRATORS_MESSSAGE); + final Boolean externalUserManagement = Boolean.parseBoolean(applicationProperties.getString(JIRA_OPTION_USER_EXTERNALMGT)); + + final SettingsModel settingsModel = SettingsModel.builder() + .baseUrl(baseUrl != null ? URI.create(baseUrl) : null) + .mode(mode) + .title(title) + .contactMessage(contactMessage) + .externalUserManagement(externalUserManagement) + .build(); return settingsModel; } diff --git a/jira/src/test/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtilTest.java b/jira/src/test/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtilTest.java index 6bcd42a5..c025f9fb 100644 --- a/jira/src/test/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtilTest.java +++ b/jira/src/test/java/com/deftdevs/bootstrapi/jira/model/util/DirectoryModelUtilTest.java @@ -69,18 +69,17 @@ void testToDirectoryModelWithProxy() { directory.setAttribute(INCREMENTAL_SYNC_ENABLED, ""); final DirectoryCrowdModel directoryModel = (DirectoryCrowdModel) DirectoryModelUtil.toDirectoryModel(directory); - assertNotNull(directoryModel); assertEquals(directory.getName(), directoryModel.getName()); final Map attributes = directory.getAttributes(); assertEquals(directory.getId(), directoryModel.getId()); assertEquals(attributes.get(CROWD_SERVER_URL), directoryModel.getServer().getUrl().toString()); - assertNull(directoryModel.getServer().getAppPassword()); + assertTrue(directoryModel.getServer().getAppPassword() == null || directoryModel.getServer().getAppPassword().isEmpty()); assertEquals(attributes.get(CROWD_HTTP_PROXY_HOST), directoryModel.getServer().getProxy().getHost()); assertEquals(attributes.get(CROWD_HTTP_PROXY_PORT), directoryModel.getServer().getProxy().getPort().toString()); assertEquals(attributes.get(CROWD_HTTP_PROXY_USERNAME), directoryModel.getServer().getProxy().getUsername()); - assertNull(directoryModel.getServer().getProxy().getPassword()); + assertEquals(attributes.get(CROWD_HTTP_PROXY_PASSWORD), directoryModel.getServer().getProxy().getPassword()); } } diff --git a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceTest.java b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceTest.java index bfbfc895..e2219f9f 100644 --- a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceTest.java +++ b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/DirectoryServiceTest.java @@ -151,7 +151,7 @@ void testSetDirectoryWithConnectionTest() { @Test void testSetDirectoryUnsupportedType() { - final DirectoryLdapModel directoryLdapModel = new DirectoryLdapModel(); + final DirectoryLdapModel directoryLdapModel = DirectoryLdapModel.builder().build(); assertThrows(BadRequestException.class, () -> { directoryService.setDirectory(1L, directoryLdapModel, false); @@ -196,7 +196,7 @@ void testAddDirectory() { @Test void testAddDirectoryUnsupportedType() { - final DirectoryLdapModel directoryLdapModel = new DirectoryLdapModel(); + final DirectoryLdapModel directoryLdapModel = DirectoryLdapModel.builder().build(); assertThrows(BadRequestException.class, () -> { directoryService.addDirectory(directoryLdapModel, false); diff --git a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/JiraSettingsServiceTest.java b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/JiraSettingsServiceTest.java index 18e21642..dbd56e8a 100644 --- a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/JiraSettingsServiceTest.java +++ b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/JiraSettingsServiceTest.java @@ -54,12 +54,13 @@ void testGetSettingsGeneral() { @Test void testSetSettingsGeneral() { - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setBaseUrl(BASE_URL); - settingsModel.setMode(MODE_PUBLIC); - settingsModel.setTitle(TITLE); - settingsModel.setContactMessage(CONTACT_MESSAGE); - settingsModel.setExternalUserManagement(Boolean.parseBoolean(EXTERNAL_USER_MANAGEMENT)); + final SettingsModel settingsModel = SettingsModel.builder() + .baseUrl(BASE_URL) + .mode(MODE_PUBLIC) + .title(TITLE) + .contactMessage(CONTACT_MESSAGE) + .externalUserManagement(Boolean.parseBoolean(EXTERNAL_USER_MANAGEMENT)) + .build(); settingsService.setSettingsGeneral(settingsModel); @@ -72,7 +73,7 @@ void testSetSettingsGeneral() { @Test void testSetSettingsGeneralEmptyModel() { - final SettingsModel settingsModel = new SettingsModel(); + final SettingsModel settingsModel = SettingsModel.builder().build(); settingsService.setSettingsGeneral(settingsModel); @@ -84,8 +85,7 @@ void testSetSettingsGeneralEmptyModel() { @Test void testSetSettingsGeneralUnsupportedMode() { - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setMode("unsupported"); + final SettingsModel settingsModel = SettingsModel.builder().mode("unsupported").build(); assertThrows(BadRequestException.class, () -> { settingsService.setSettingsGeneral(settingsModel); @@ -94,8 +94,7 @@ void testSetSettingsGeneralUnsupportedMode() { @Test void testSetSettingsGeneralInvalidCombination() { - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setMode(MODE_PUBLIC); + final SettingsModel settingsModel = SettingsModel.builder().mode(MODE_PUBLIC).build(); doReturn(true).when(applicationProperties).getOption(JIRA_OPTION_USER_EXTERNALMGT); assertThrows(BadRequestException.class, () -> { diff --git a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/MailServerServiceTest.java b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/MailServerServiceTest.java index 55f575d5..878fc1eb 100644 --- a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/MailServerServiceTest.java +++ b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/MailServerServiceTest.java @@ -98,7 +98,7 @@ void testPutSmtpMaiLServerCreate() throws Exception { @Test void testPutMailServerSmtpDefaultConfig() throws MailException { - final MailServerSmtpModel mailServerSmtpModel = new MailServerSmtpModel(); + final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); mailServerService.setMailServerSmtp(mailServerSmtpModel); diff --git a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceTest.java b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceTest.java index d9dad0da..c4992884 100644 --- a/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceTest.java +++ b/jira/src/test/java/com/deftdevs/bootstrapi/jira/service/SettingsServiceTest.java @@ -56,12 +56,13 @@ void testGetSettingsGeneral() { @Test void testSetSettingsGeneral() { - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setBaseUrl(BASE_URL); - settingsModel.setMode(MODE_PUBLIC); - settingsModel.setTitle(TITLE); - settingsModel.setContactMessage(CONTACT_MESSAGE); - settingsModel.setExternalUserManagement(Boolean.parseBoolean(EXTERNAL_USER_MANAGEMENT)); + final SettingsModel settingsModel = SettingsModel.builder() + .baseUrl(BASE_URL) + .mode(MODE_PUBLIC) + .title(TITLE) + .contactMessage(CONTACT_MESSAGE) + .externalUserManagement(Boolean.parseBoolean(EXTERNAL_USER_MANAGEMENT)) + .build(); settingsService.setSettingsGeneral(settingsModel); @@ -74,7 +75,7 @@ void testSetSettingsGeneral() { @Test void testSetSettingsGeneralEmptyModel() { - final SettingsModel settingsModel = new SettingsModel(); + final SettingsModel settingsModel = SettingsModel.builder().build(); settingsService.setSettingsGeneral(settingsModel); @@ -108,8 +109,7 @@ void testSetSettingsSecurity() { @Test void testSetSettingsGeneralUnsupportedMode() { - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setMode("unsupported"); + final SettingsModel settingsModel = SettingsModel.builder().mode("unsupported").build(); assertThrows(BadRequestException.class, () -> { settingsService.setSettingsGeneral(settingsModel); @@ -118,8 +118,7 @@ void testSetSettingsGeneralUnsupportedMode() { @Test void testSetSettingsGeneralInvalidCombination() { - final SettingsModel settingsModel = new SettingsModel(); - settingsModel.setMode(MODE_PUBLIC); + final SettingsModel settingsModel = SettingsModel.builder().mode(MODE_PUBLIC).build(); doReturn(true).when(applicationProperties).getOption(JIRA_OPTION_USER_EXTERNALMGT); assertThrows(BadRequestException.class, () -> { From eaf3d1f8afa8edc0118d7586ec657743bf9e57e8 Mon Sep 17 00:00:00 2001 From: Patrick Hobusch Date: Mon, 21 Jul 2025 09:24:30 +0200 Subject: [PATCH 3/3] WIP_NP_ALL_ARGS_CONSTRUCTORS --- .../model/AbstractAuthenticationIdpModel.java | 4 +++ .../commons/model/AbstractDirectoryModel.java | 4 +++ .../AbstractMailServerProtocolModel.java | 8 ++++- .../commons/model/ApplicationLinkModel.java | 4 +++ .../model/AuthenticationIdpOidcModel.java | 4 +++ .../model/AuthenticationIdpSamlModel.java | 4 +++ .../commons/model/AuthenticationSsoModel.java | 4 +++ .../commons/model/DirectoryCrowdModel.java | 4 +++ .../model/DirectoryDelegatingModel.java | 4 +++ .../commons/model/DirectoryGenericModel.java | 1 + .../commons/model/DirectoryInternalModel.java | 4 +++ .../commons/model/DirectoryLdapModel.java | 4 +++ .../bootstrapi/commons/model/GroupModel.java | 4 +++ .../commons/model/LicenseModel.java | 4 +++ .../commons/model/MailServerPopModel.java | 1 + .../commons/model/MailServerSmtpModel.java | 6 ++-- .../commons/model/PermissionsGlobalModel.java | 4 +++ .../SettingsBrandingColorSchemeModel.java | 10 ++++-- .../commons/model/SettingsModel.java | 4 +++ .../commons/model/SettingsSecurityModel.java | 4 +++ .../bootstrapi/commons/model/UserModel.java | 4 +++ .../model/util/ApplicationLinkModelUtil.java | 16 ++++----- .../SettingsBrandingColorSchemeModel.md | 1 + .../confluence/model/CacheModel.java | 4 +++ .../model/PermissionAnonymousAccessModel.java | 4 +++ .../model/SettingsCustomHtmlModel.java | 4 +++ .../model/util/DirectoryModelUtil.java | 26 ++++++++++---- .../model/util/MailServerPopModelUtil.java | 2 +- .../model/util/MailServerSmtpModelUtil.java | 24 ++++++------- .../util/PermissionsGlobalModelUtil.java | 5 ++- .../SettingsBrandingColorSchemeModelUtil.java | 36 +++++++++---------- .../service/SettingsServiceTest.java | 33 +++++++++-------- .../bootstrapi/crowd/model/AllModel.java | 4 +++ .../crowd/model/ApplicationModel.java | 4 +++ .../crowd/model/MailTemplatesModel.java | 4 +++ .../crowd/model/SessionConfigModel.java | 6 +++- .../model/SettingsBrandingLoginPageModel.java | 4 +++ .../model/util/ApplicationModelUtil.java | 36 +++++++++---------- .../model/util/MailServerSmtpModelUtil.java | 22 ++++++------ .../service/SettingsBrandingServiceImpl.java | 17 +++++---- .../crowd/service/SettingsServiceImpl.java | 8 ++--- .../service/ApplicationsServiceTest.java | 19 +++++----- .../service/MailTemplatesServiceTest.java | 13 +++---- .../crowd/rest/SettingsResourceFuncTest.java | 8 ++--- .../jira/model/SettingsBannerModel.java | 4 +++ 45 files changed, 263 insertions(+), 131 deletions(-) diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java index 974e4596..03b342bd 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractAuthenticationIdpModel.java @@ -4,7 +4,9 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; @@ -15,6 +17,8 @@ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java index 0f567294..4542c67f 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractDirectoryModel.java @@ -4,7 +4,9 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.validation.constraints.NotNull; @@ -17,6 +19,8 @@ */ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java index c064a390..7de5e717 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AbstractMailServerProtocolModel.java @@ -1,16 +1,22 @@ package com.deftdevs.bootstrapi.commons.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.builder.EqualsExclude; import org.apache.commons.lang3.builder.HashCodeExclude; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; @Data -@SuperBuilder(toBuilder = true) +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@XmlRootElement public abstract class AbstractMailServerProtocolModel { public static final Long DEFAULT_TIMEOUT = 10000L; diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java index 5d52977b..42cee59f 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/ApplicationLinkModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; @@ -15,6 +17,8 @@ */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.APPLICATION_LINK) public class ApplicationLinkModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java index 8311c00d..cc95cd54 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpOidcModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; @@ -12,6 +14,8 @@ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.AUTHENTICATION + "-" + BootstrAPI.AUTHENTICATION_IDP + "-" + BootstrAPI.AUTHENTICATION_IDP_OIDC) public class AuthenticationIdpOidcModel extends AbstractAuthenticationIdpModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java index bd9f00b5..24940442 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationIdpSamlModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; @@ -10,6 +12,8 @@ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.AUTHENTICATION + "-" + BootstrAPI.AUTHENTICATION_IDP + "-" + BootstrAPI.AUTHENTICATION_IDP_SAML) public class AuthenticationIdpSamlModel extends AbstractAuthenticationIdpModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java index 98aaf889..24e8b5b6 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/AuthenticationSsoModel.java @@ -1,14 +1,18 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.AUTHENTICATION + "-" + BootstrAPI.AUTHENTICATION_SSO) public class AuthenticationSsoModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java index 9da0340e..ea8c87d1 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryCrowdModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import lombok.Builder; @@ -16,6 +18,8 @@ */ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_CROWD) public class DirectoryCrowdModel extends AbstractDirectoryModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java index 9cacf992..5a120bc5 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryDelegatingModel.java @@ -2,8 +2,10 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import com.deftdevs.bootstrapi.commons.model.type.DirectoryPermissions; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import lombok.Builder; @@ -12,6 +14,8 @@ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_DELEGATING) public class DirectoryDelegatingModel extends AbstractDirectoryModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java index a66722f6..fa3e90e1 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryGenericModel.java @@ -12,6 +12,7 @@ */ @Data @SuperBuilder +// may not have constructor annotations because the class does not contain any additional fields @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_GENERIC) public class DirectoryGenericModel extends AbstractDirectoryModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java index 996f9657..3a6f4ceb 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryInternalModel.java @@ -2,8 +2,10 @@ import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; import com.deftdevs.bootstrapi.commons.model.type.DirectoryPermissions; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import lombok.Builder; @@ -18,6 +20,8 @@ */ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_INTERNAL) public class DirectoryInternalModel extends AbstractDirectoryModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java index d3729252..f3553bc5 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/DirectoryLdapModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import lombok.Builder; @@ -15,6 +17,8 @@ */ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.DIRECTORY + '-' + BootstrAPI.DIRECTORY_LDAP) public class DirectoryLdapModel extends AbstractDirectoryModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java index 34c31bd3..a14c6256 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/GroupModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -12,6 +14,8 @@ */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.GROUP) public class GroupModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java index 9b08e1cc..8628cae8 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/LicenseModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -16,6 +18,8 @@ */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.LICENSE) public class LicenseModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java index 994b6c48..f00a481d 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerPopModel.java @@ -9,6 +9,7 @@ @Data @SuperBuilder +// may not have constructor annotations because the class does not contain any additional fields @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.MAIL_SERVER + "-" + BootstrAPI.MAIL_SERVER_POP) public class MailServerPopModel extends AbstractMailServerProtocolModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java index 648ca39f..46265a90 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/MailServerSmtpModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlElement; @@ -10,6 +12,8 @@ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @EqualsAndHashCode(callSuper = true) @XmlRootElement(name = BootstrAPI.MAIL_SERVER + "-" + BootstrAPI.MAIL_SERVER_SMTP) public class MailServerSmtpModel extends AbstractMailServerProtocolModel { @@ -26,8 +30,6 @@ public class MailServerSmtpModel extends AbstractMailServerProtocolModel { @XmlElement private Boolean useTls; - // Removed explicit constructor to allow Lombok builder and inheritance to work - public boolean getUseTls() { return Boolean.TRUE.equals(useTls); } diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java index a0e89ca2..01e7951a 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/PermissionsGlobalModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -12,6 +14,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.PERMISSIONS + "-" + BootstrAPI.PERMISSIONS_GLOBAL) public class PermissionsGlobalModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java index 0bdb1235..29fe6548 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsBrandingColorSchemeModel.java @@ -1,7 +1,9 @@ package com.deftdevs.bootstrapi.commons.model; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -12,6 +14,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_BRANDING + "-" + COLOR_SCHEME) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsBrandingColorSchemeModel { @@ -49,8 +53,8 @@ public class SettingsBrandingColorSchemeModel { @XmlElement private String searchFieldText; - // @XmlElement - // private String pageMenuSelectedBackground; // REMOVED: field not supported by util, builder, or ColourScheme + @XmlElement + private String pageMenuSelectedBackground; @XmlElement private String pageMenuItemText; @@ -77,7 +81,7 @@ public class SettingsBrandingColorSchemeModel { .menuItemSelectedBackground(COLOR_WHITE) .menuItemSelectedText(COLOR_WHITE) .pageMenuItemText(COLOR_WHITE) - // .pageMenuSelectedBackground(COLOR_WHITE) // REMOVED: field does not exist + .pageMenuSelectedBackground(COLOR_WHITE) .searchFieldBackground(COLOR_WHITE) .searchFieldText(COLOR_WHITE) .topBar(COLOR_WHITE) diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java index 95c42dcb..1689a097 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import org.apache.commons.lang3.StringUtils; import javax.xml.bind.annotation.XmlAccessType; @@ -13,6 +15,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.SETTINGS) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java index a60b1632..8e41cf35 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/SettingsSecurityModel.java @@ -1,6 +1,8 @@ package com.deftdevs.bootstrapi.commons.model; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; import javax.xml.bind.annotation.XmlAccessType; @@ -13,6 +15,8 @@ @Data @SuperBuilder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_SECURITY) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsSecurityModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java index 40dedd29..b3e2ba7a 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/UserModel.java @@ -1,9 +1,11 @@ package com.deftdevs.bootstrapi.commons.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -14,6 +16,8 @@ */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.USER) public class UserModel { diff --git a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java index 21446201..4a6f245b 100644 --- a/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java +++ b/commons/src/main/java/com/deftdevs/bootstrapi/commons/model/util/ApplicationLinkModelUtil.java @@ -33,14 +33,14 @@ public class ApplicationLinkModelUtil { public static ApplicationLinkModel toApplicationLinkModel( final ApplicationLink applicationLink) { - final ApplicationLinkModel applicationLinkModel = ApplicationLinkModel.builder().build(); - applicationLinkModel.setUuid(UUID.fromString(applicationLink.getId().get())); - applicationLinkModel.setName(applicationLink.getName()); - applicationLinkModel.setType(getLinkTypeFromAppType(applicationLink.getType())); - applicationLinkModel.setDisplayUrl(applicationLink.getDisplayUrl()); - applicationLinkModel.setRpcUrl(applicationLink.getRpcUrl()); - applicationLinkModel.setPrimary(applicationLink.isPrimary()); - return applicationLinkModel; + return ApplicationLinkModel.builder() + .uuid(UUID.fromString(applicationLink.getId().get())) + .name(applicationLink.getName()) + .type(getLinkTypeFromAppType(applicationLink.getType())) + .displayUrl(applicationLink.getDisplayUrl()) + .rpcUrl(applicationLink.getRpcUrl()) + .primary(applicationLink.isPrimary()) + .build(); } /** diff --git a/confluence/Models/SettingsBrandingColorSchemeModel.md b/confluence/Models/SettingsBrandingColorSchemeModel.md index b668718a..c7004ebd 100644 --- a/confluence/Models/SettingsBrandingColorSchemeModel.md +++ b/confluence/Models/SettingsBrandingColorSchemeModel.md @@ -14,6 +14,7 @@ | **menuItemSelectedText** | **String** | | [optional] [default to null] | | **searchFieldBackground** | **String** | | [optional] [default to null] | | **searchFieldText** | **String** | | [optional] [default to null] | +| **pageMenuSelectedBackground** | **String** | | [optional] [default to null] | | **pageMenuItemText** | **String** | | [optional] [default to null] | | **headingText** | **String** | | [optional] [default to null] | | **links** | **String** | | [optional] [default to null] | diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java index 1c4dc1b7..f2a2c02b 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/CacheModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.confluence.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; import javax.xml.bind.annotation.XmlElement; @@ -10,6 +12,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.CACHE) public class CacheModel { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java index 6e7c0a9d..8c2e5cfa 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/PermissionAnonymousAccessModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.confluence.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -12,6 +14,8 @@ */ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.PERMISSION_ANONYMOUS_ACCESS) public class PermissionAnonymousAccessModel { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java index c2a8509f..8c9f2f99 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/SettingsCustomHtmlModel.java @@ -1,7 +1,9 @@ package com.deftdevs.bootstrapi.confluence.model; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -12,6 +14,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_CUSTOM_HTML) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsCustomHtmlModel { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java index 5af7adee..07a50f8d 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/DirectoryModelUtil.java @@ -8,7 +8,6 @@ import com.deftdevs.bootstrapi.commons.model.DirectoryCrowdModel; import com.deftdevs.bootstrapi.commons.model.DirectoryCrowdModel.DirectoryCrowdAdvanced; import com.deftdevs.bootstrapi.commons.model.DirectoryCrowdModel.DirectoryCrowdServer; -import com.deftdevs.bootstrapi.commons.model.DirectoryCrowdModel.DirectoryCrowdServer.DirectoryCrowdServerProxy; import com.deftdevs.bootstrapi.commons.model.DirectoryGenericModel; import com.deftdevs.bootstrapi.commons.model.DirectoryInternalModel; import com.deftdevs.bootstrapi.commons.model.DirectoryLdapModel; @@ -17,10 +16,22 @@ import java.util.HashMap; import java.util.Map; -import static com.atlassian.crowd.directory.RemoteCrowdDirectory.*; -import static com.atlassian.crowd.directory.SynchronisableDirectoryProperties.*; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.APPLICATION_NAME; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.APPLICATION_PASSWORD; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_HTTP_MAX_CONNECTIONS; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_HTTP_PROXY_HOST; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_HTTP_PROXY_PASSWORD; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_HTTP_PROXY_PORT; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_HTTP_PROXY_USERNAME; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_HTTP_TIMEOUT; +import static com.atlassian.crowd.directory.RemoteCrowdDirectory.CROWD_SERVER_URL; +import static com.atlassian.crowd.directory.SynchronisableDirectoryProperties.CACHE_SYNCHRONISE_INTERVAL; +import static com.atlassian.crowd.directory.SynchronisableDirectoryProperties.INCREMENTAL_SYNC_ENABLED; +import static com.atlassian.crowd.directory.SynchronisableDirectoryProperties.SYNC_GROUP_MEMBERSHIP_AFTER_SUCCESSFUL_USER_AUTH_ENABLED; import static com.atlassian.crowd.model.directory.DirectoryImpl.ATTRIBUTE_KEY_USE_NESTED_GROUPS; -import static com.deftdevs.bootstrapi.commons.util.ConversionUtil.*; +import static com.deftdevs.bootstrapi.commons.util.ConversionUtil.toBoolean; +import static com.deftdevs.bootstrapi.commons.util.ConversionUtil.toInt; +import static com.deftdevs.bootstrapi.commons.util.ConversionUtil.toLong; public class DirectoryModelUtil { @@ -33,6 +44,7 @@ public static Directory toDirectory( final DirectoryCrowdModel directoryModel) { final Map attributes = new HashMap<>(); + if (directoryModel.getServer() != null) { attributes.put(CROWD_SERVER_URL, directoryModel.getServer().getUrl().toString()); attributes.put(APPLICATION_NAME, directoryModel.getServer().getAppUsername()); @@ -46,6 +58,7 @@ public static Directory toDirectory( attributes.put(CROWD_HTTP_PROXY_PASSWORD, directoryModel.getServer().getProxy().getPassword()); } } + if (directoryModel.getAdvanced() != null) { attributes.put(CACHE_SYNCHRONISE_INTERVAL, directoryModel.getAdvanced().getUpdateSyncIntervalInMinutes() != 0 ? String.valueOf(directoryModel.getAdvanced().getUpdateSyncIntervalInMinutes()) : "3600"); @@ -74,8 +87,8 @@ public static AbstractDirectoryModel toDirectoryModel( final AbstractDirectoryModel directoryModel; if (DirectoryType.CROWD.equals(directory.getType())) { - DirectoryCrowdServer.DirectoryCrowdServerProxy proxy = null; + if (attributes.containsKey(CROWD_HTTP_PROXY_HOST)) { proxy = DirectoryCrowdServer.DirectoryCrowdServerProxy.builder() .username(attributes.get(CROWD_HTTP_PROXY_USERNAME)) @@ -97,11 +110,10 @@ public static AbstractDirectoryModel toDirectoryModel( .updateSyncIntervalInMinutes(toInt(attributes.get(CACHE_SYNCHRONISE_INTERVAL))) .build(); - DirectoryCrowdModel directoryCrowdModel = DirectoryCrowdModel.builder() + directoryModel = DirectoryCrowdModel.builder() .server(serverModel) .advanced(advanced) .build(); - directoryModel = directoryCrowdModel; } else { directoryModel = DirectoryGenericModel.builder().build(); } diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java index 66e6fb6b..c340f8f3 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerPopModelUtil.java @@ -21,7 +21,7 @@ public static MailServerPopModel toMailServerPopModel( .protocol(popMailServer.getMailProtocol().getProtocol()) .host(popMailServer.getHostname()) .port(popMailServer.getPort() == null ? null : Integer.valueOf(popMailServer.getPort())) - .timeout(Long.valueOf(popMailServer.getTimeout())) + .timeout(popMailServer.getTimeout()) .username(popMailServer.getUsername()) .build(); } diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java index 9f0231c5..b8a9f6f5 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/MailServerSmtpModelUtil.java @@ -15,18 +15,18 @@ public static MailServerSmtpModel toMailServerSmtpModel( return null; } - final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); - mailServerSmtpModel.setName(smtpMailServer.getName()); - mailServerSmtpModel.setDescription(smtpMailServer.getDescription()); - mailServerSmtpModel.setFrom(smtpMailServer.getDefaultFrom()); - mailServerSmtpModel.setPrefix(smtpMailServer.getPrefix()); - mailServerSmtpModel.setProtocol(smtpMailServer.getMailProtocol().getProtocol()); - mailServerSmtpModel.setHost(smtpMailServer.getHostname()); - mailServerSmtpModel.setPort(smtpMailServer.getPort()); - mailServerSmtpModel.setUseTls(smtpMailServer.isTlsRequired()); - mailServerSmtpModel.setTimeout(smtpMailServer.getTimeout()); - mailServerSmtpModel.setUsername(smtpMailServer.getUsername()); - return mailServerSmtpModel; + return MailServerSmtpModel.builder() + .name(smtpMailServer.getName()) + .description(smtpMailServer.getDescription()) + .from(smtpMailServer.getDefaultFrom()) + .prefix(smtpMailServer.getPrefix()) + .protocol(smtpMailServer.getMailProtocol().getProtocol()) + .host(smtpMailServer.getHostname()) + .port(smtpMailServer.getPort() == null ? null : Integer.valueOf(smtpMailServer.getPort())) + .useTls(smtpMailServer.isTlsRequired()) + .timeout(smtpMailServer.getTimeout()) + .username(smtpMailServer.getUsername()) + .build(); } private MailServerSmtpModelUtil() { diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java index 9ca0f387..3ecdf439 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/PermissionsGlobalModelUtil.java @@ -41,13 +41,16 @@ public static PermissionsGlobalModel toPermissionsGlobalModel( anonymousGlobalPermissions.add(globalAnonymousPermission.getType()); } - PermissionsGlobalModel.PermissionsGlobalModelBuilder builder = PermissionsGlobalModel.builder(); + final PermissionsGlobalModel.PermissionsGlobalModelBuilder builder = PermissionsGlobalModel.builder(); + if (!groupGlobalPermissions.isEmpty()) { builder.groupPermissions(groupGlobalPermissions); } + if (!anonymousGlobalPermissions.isEmpty()) { builder.anonymousPermissions(new ArrayList<>(anonymousGlobalPermissions)); } + return builder.build(); } diff --git a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java index 2a9d9c6b..441d1d36 100644 --- a/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java +++ b/confluence/src/main/java/com/deftdevs/bootstrapi/confluence/model/util/SettingsBrandingColorSchemeModelUtil.java @@ -14,23 +14,23 @@ public class SettingsBrandingColorSchemeModelUtil { */ public static SettingsBrandingColorSchemeModel toSettingsBrandingColorSchemeModel( final ColourScheme colourScheme) { - final ColourScheme cs = colourScheme; + return SettingsBrandingColorSchemeModel.builder() - .topBar(cs.get(ColourScheme.TOP_BAR)) - .topBarMenuItemText(cs.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)) - .topBarMenuSelectedBackground(cs.get(ColourScheme.TOP_BAR_MENU_SELECTED_BACKGROUND)) - .topBarMenuSelectedText(cs.get(ColourScheme.TOP_BAR_MENU_SELECTED_TEXT)) - .topBarText(cs.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)) - .headerButtonBackground(cs.get(ColourScheme.HEADER_BUTTON_BASE_BACKGROUND)) - .headerButtonText(cs.get(ColourScheme.HEADER_BUTTON_TEXT)) - .headingText(cs.get(ColourScheme.HEADING_TEXT)) - .menuItemSelectedBackground(cs.get(ColourScheme.MENU_ITEM_SELECTED_BACKGROUND)) - .menuItemSelectedText(cs.get(ColourScheme.MENU_ITEM_SELECTED_TEXT)) - .pageMenuItemText(cs.get(ColourScheme.MENU_ITEM_TEXT)) - // .pageMenuSelectedBackground(cs.get(ColourScheme.PAGE_MENU_SELECTED_BACKGROUND)) // REMOVED: constant does not exist - .bordersAndDividers(cs.get(ColourScheme.BORDER)) - .searchFieldBackground(cs.get(ColourScheme.SEARCH_FIELD_BACKGROUND)) - .searchFieldText(cs.get(ColourScheme.SEARCH_FIELD_TEXT)) + .topBar(colourScheme.get(ColourScheme.TOP_BAR)) + .topBarMenuItemText(colourScheme.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)) + .topBarMenuSelectedBackground(colourScheme.get(ColourScheme.TOP_BAR_MENU_SELECTED_BACKGROUND)) + .topBarMenuSelectedText(colourScheme.get(ColourScheme.TOP_BAR_MENU_SELECTED_TEXT)) + .topBarText(colourScheme.get(ColourScheme.TOP_BAR_MENU_ITEM_TEXT)) + .headerButtonBackground(colourScheme.get(ColourScheme.HEADER_BUTTON_BASE_BACKGROUND)) + .headerButtonText(colourScheme.get(ColourScheme.HEADER_BUTTON_TEXT)) + .headingText(colourScheme.get(ColourScheme.HEADING_TEXT)) + .menuItemSelectedBackground(colourScheme.get(ColourScheme.MENU_ITEM_SELECTED_BACKGROUND)) + .menuItemSelectedText(colourScheme.get(ColourScheme.MENU_ITEM_SELECTED_TEXT)) + .pageMenuItemText(colourScheme.get(ColourScheme.MENU_ITEM_TEXT)) + // .pageMenuSelectedBackground(cs.get(ColourScheme.MENU_ITEM_SELECTED_BACKGROUND)) + .bordersAndDividers(colourScheme.get(ColourScheme.BORDER)) + .searchFieldBackground(colourScheme.get(ColourScheme.SEARCH_FIELD_BACKGROUND)) + .searchFieldText(colourScheme.get(ColourScheme.SEARCH_FIELD_TEXT)) .build(); } @@ -55,11 +55,11 @@ public static BaseColourScheme toGlobalColorScheme( setColorCode(colourScheme, ColourScheme.HEADER_BUTTON_BASE_BACKGROUND, schemeModel.getHeaderButtonBackground()); setColorCode(colourScheme, ColourScheme.HEADER_BUTTON_TEXT, schemeModel.getHeaderButtonText()); setColorCode(colourScheme, ColourScheme.HEADING_TEXT, schemeModel.getHeadingText()); - // setColorCode(colourScheme, ColourScheme.LINK, schemeModel.getLinks()); // REMOVED: not present in model or builder + setColorCode(colourScheme, ColourScheme.LINK, schemeModel.getLinks()); setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_BACKGROUND, schemeModel.getMenuItemSelectedBackground()); setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_TEXT, schemeModel.getMenuItemSelectedText()); setColorCode(colourScheme, ColourScheme.MENU_ITEM_TEXT, schemeModel.getPageMenuItemText()); - // setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_BACKGROUND, schemeModel.getPageMenuSelectedBackground()); // REMOVED: field/method does not exist + // setColorCode(colourScheme, ColourScheme.MENU_ITEM_SELECTED_BACKGROUND, schemeModel.getPageMenuSelectedBackground()); setColorCode(colourScheme, ColourScheme.SEARCH_FIELD_BACKGROUND, schemeModel.getSearchFieldBackground()); setColorCode(colourScheme, ColourScheme.SEARCH_FIELD_TEXT, schemeModel.getSearchFieldText()); diff --git a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java index 535bdd03..06f07919 100644 --- a/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java +++ b/confluence/src/test/java/com/deftdevs/bootstrapi/confluence/service/SettingsServiceTest.java @@ -41,11 +41,12 @@ void testGetSettingsGeneral() { final SettingsModel settingsModel = settingsService.getSettingsGeneral(); - final SettingsModel settingsModelRef = SettingsModel.builder().build(); - settingsModelRef.setBaseUrl(URI.create(settings.getBaseUrl())); - settingsModelRef.setTitle(settings.getSiteTitle()); - settingsModelRef.setContactMessage(settings.getCustomContactMessage()); - settingsModelRef.setExternalUserManagement(settings.isExternalUserManagement()); + final SettingsModel settingsModelRef = SettingsModel.builder() + .baseUrl(URI.create(settings.getBaseUrl())) + .title(settings.getSiteTitle()) + .contactMessage(settings.getCustomContactMessage()) + .externalUserManagement(settings.isExternalUserManagement()) + .build(); assertEquals(settingsModelRef, settingsModel); } @@ -57,11 +58,12 @@ void testSetSettingsGeneral() { final Settings updateSettings = new OtherTestSettings(); - final SettingsModel requestModel = SettingsModel.builder().build(); - requestModel.setBaseUrl(URI.create(updateSettings.getBaseUrl())); - requestModel.setTitle(updateSettings.getSiteTitle()); - requestModel.setContactMessage(updateSettings.getCustomContactMessage()); - requestModel.setExternalUserManagement(updateSettings.isExternalUserManagement()); + final SettingsModel requestModel = SettingsModel.builder() + .baseUrl(URI.create(updateSettings.getBaseUrl())) + .title(updateSettings.getSiteTitle()) + .contactMessage(updateSettings.getCustomContactMessage()) + .externalUserManagement(updateSettings.isExternalUserManagement()) + .build(); final SettingsModel responseModel = settingsService.setSettingsGeneral(requestModel); @@ -69,11 +71,12 @@ void testSetSettingsGeneral() { verify(globalSettingsManager).updateGlobalSettings(settingsCaptor.capture()); final Settings settings = settingsCaptor.getValue(); - final SettingsModel settingsModel = SettingsModel.builder().build(); - settingsModel.setBaseUrl(URI.create(settings.getBaseUrl())); - settingsModel.setTitle(settings.getSiteTitle()); - settingsModel.setContactMessage(settings.getCustomContactMessage()); - settingsModel.setExternalUserManagement(settings.isExternalUserManagement()); + final SettingsModel settingsModel = SettingsModel.builder() + .baseUrl(URI.create(settings.getBaseUrl())) + .title(settings.getSiteTitle()) + .contactMessage(settings.getCustomContactMessage()) + .externalUserManagement(settings.isExternalUserManagement()) + .build(); assertEquals(requestModel, settingsModel); assertEquals(requestModel, responseModel); diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java index 97655e41..94eb5694 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/AllModel.java @@ -1,8 +1,10 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.commons.model.SettingsModel; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -10,6 +12,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = "all") public class AllModel { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java index 0739dfed..925873d7 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/ApplicationModel.java @@ -2,8 +2,10 @@ import com.atlassian.crowd.embedded.api.OperationType; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @@ -12,6 +14,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.APPLICATION) public class ApplicationModel { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java index f8efd6d5..9139afd8 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/MailTemplatesModel.java @@ -1,14 +1,18 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.crowd.rest.api.MailTemplateResource; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = MailTemplateResource.MAIL_TEMPLATES) public class MailTemplatesModel { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java index 1edb715b..0782595e 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SessionConfigModel.java @@ -1,14 +1,18 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.crowd.rest.api.SessionConfigResource; -import lombok.Data; +import lombok.AllArgsConstructor; import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = SessionConfigResource.SESSION_CONFIG) public class SessionConfigModel { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java index af7dc9f7..3107978b 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/SettingsBrandingLoginPageModel.java @@ -1,14 +1,18 @@ package com.deftdevs.bootstrapi.crowd.model; import com.deftdevs.bootstrapi.commons.constants.BootstrAPI; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = BootstrAPI.SETTINGS_BRANDING_LOGIN_PAGE) public class SettingsBrandingLoginPageModel { diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java index c7300390..d0e8c749 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/ApplicationModelUtil.java @@ -20,25 +20,23 @@ public static ApplicationModel toApplicationModel( final Application application, final DefaultGroupMembershipService defaultGroupMembershipService) { - final ApplicationModel applicationModel = ApplicationModel.builder().build(); - - applicationModel.setId(application.getId()); - applicationModel.setName(application.getName()); - applicationModel.setDescription(application.getDescription()); - applicationModel.setActive(application.isActive()); - applicationModel.setType(toApplicationModelType(application.getType())); - applicationModel.setCachedDirectoriesAuthenticationOrderOptimisationEnabled(application.isCachedDirectoriesAuthenticationOrderOptimisationEnabled()); - applicationModel.setDirectoryMappings(toApplicationModelDirectoryMappings(application, defaultGroupMembershipService).stream() - .sorted(Comparator.comparing(ApplicationModel.ApplicationDirectoryMapping::getDirectoryName)) - .collect(Collectors.toList())); - applicationModel.setAccessBasedSynchronisation(toApplicationModelAccessBasedSynchronisation(application)); - applicationModel.setMembershipAggregationEnabled(application.isMembershipAggregationEnabled()); - applicationModel.setRemoteAddresses(toStringCollection(application.getRemoteAddresses())); - applicationModel.setAliasingEnabled(application.isAliasingEnabled()); - applicationModel.setLowercaseOutputEnabled(application.isLowerCaseOutput()); - applicationModel.setAuthenticationWithoutPasswordEnabled(application.isAuthenticationWithoutPasswordEnabled()); - - return applicationModel; + return ApplicationModel.builder() + .id(application.getId()) + .name(application.getName()) + .description(application.getDescription()) + .active(application.isActive()) + .type(toApplicationModelType(application.getType())) + .cachedDirectoriesAuthenticationOrderOptimisationEnabled(application.isCachedDirectoriesAuthenticationOrderOptimisationEnabled()) + .directoryMappings(toApplicationModelDirectoryMappings(application, defaultGroupMembershipService).stream() + .sorted(Comparator.comparing(ApplicationModel.ApplicationDirectoryMapping::getDirectoryName)) + .collect(Collectors.toList())) + .accessBasedSynchronisation(toApplicationModelAccessBasedSynchronisation(application)) + .membershipAggregationEnabled(application.isMembershipAggregationEnabled()) + .remoteAddresses(toStringCollection(application.getRemoteAddresses())) + .aliasingEnabled(application.isAliasingEnabled()) + .lowercaseOutputEnabled(application.isLowerCaseOutput()) + .authenticationWithoutPasswordEnabled(application.isAuthenticationWithoutPasswordEnabled()) + .build(); } public static Application toApplication( diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java index 22244a5c..c886dcdb 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/model/util/MailServerSmtpModelUtil.java @@ -20,30 +20,30 @@ public static MailServerSmtpModel toMailServerSmtpModel( return null; } - final MailServerSmtpModel mailServerSmtpModel = MailServerSmtpModel.builder().build(); + MailServerSmtpModel.MailServerSmtpModelBuilder mailServerSmtpModelBuilder = MailServerSmtpModel.builder(); if (mailConfiguration.getNotificationEmails() != null && !mailConfiguration.getNotificationEmails().isEmpty()) { - mailServerSmtpModel.setAdminContact(mailConfiguration.getNotificationEmails().get(0)); + mailServerSmtpModelBuilder.adminContact(mailConfiguration.getNotificationEmails().get(0)); } final SMTPServer mailConfigurationSmtp = mailConfiguration.getSmtpServer(); if (mailConfigurationSmtp.getFrom() != null) { - mailServerSmtpModel.setFrom(mailConfigurationSmtp.getFrom().toString()); + mailServerSmtpModelBuilder.from(mailConfigurationSmtp.getFrom().toString()); } - mailServerSmtpModel.setPrefix(mailConfigurationSmtp.getPrefix()); - mailServerSmtpModel.setHost(mailConfigurationSmtp.getHost()); - mailServerSmtpModel.setPort(mailConfigurationSmtp.getPort()); - mailServerSmtpModel.setUsername(mailConfigurationSmtp.getUsername()); - // don't return password here - mailServerSmtpModel.setTimeout((long) mailConfigurationSmtp.getTimeout()); - // TODO: After the build blocker in BootstrAPI commons has been removed, // implement proper distinguishing between useTls and startTls, // see https://github.com/deftdevs/bootstrapi-commons/issues/153 - return mailServerSmtpModel; + return mailServerSmtpModelBuilder + .prefix(mailConfigurationSmtp.getPrefix()) + .host(mailConfigurationSmtp.getHost()) + .port(mailConfigurationSmtp.getPort()) + .username(mailConfigurationSmtp.getUsername()) + // don't return password here + .timeout((long) mailConfigurationSmtp.getTimeout()) + .build(); } @Nullable diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java index 97dd4bd1..8381f0e1 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsBrandingServiceImpl.java @@ -32,15 +32,14 @@ public SettingsBrandingServiceImpl( @Override public SettingsBrandingLoginPageModel getLoginPage() { - final SettingsBrandingLoginPageModel settingsBrandingLoginPageModel = SettingsBrandingLoginPageModel.builder().build(); - - LookAndFeelConfiguration lookAndFeelConfiguration = getLookAndFeelConfiguration(); - settingsBrandingLoginPageModel.setHeader(lookAndFeelConfiguration.getHeader()); - settingsBrandingLoginPageModel.setContent(lookAndFeelConfiguration.getWelcomeText()); - settingsBrandingLoginPageModel.setButtonColor(lookAndFeelConfiguration.getPrimaryColor()); - settingsBrandingLoginPageModel.setShowLogo(lookAndFeelConfiguration.isShowLogo()); - - return settingsBrandingLoginPageModel; + final LookAndFeelConfiguration lookAndFeelConfiguration = getLookAndFeelConfiguration(); + + return SettingsBrandingLoginPageModel.builder() + .header(lookAndFeelConfiguration.getHeader()) + .content(lookAndFeelConfiguration.getWelcomeText()) + .buttonColor(lookAndFeelConfiguration.getPrimaryColor()) + .showLogo(lookAndFeelConfiguration.isShowLogo()) + .build(); } @Override diff --git a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java index 39450547..ec4f6d64 100644 --- a/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java +++ b/crowd/src/main/java/com/deftdevs/bootstrapi/crowd/service/SettingsServiceImpl.java @@ -19,14 +19,14 @@ public SettingsServiceImpl( @Override public SettingsModel getSettingsGeneral() { - SettingsModel settingsModel = SettingsModel.builder().build(); try { - settingsModel.setBaseUrl(propertyManager.getBaseUrl()); - settingsModel.setTitle(propertyManager.getDeploymentTitle()); + return SettingsModel.builder() + .baseUrl(propertyManager.getBaseUrl()) + .title(propertyManager.getDeploymentTitle()) + .build(); } catch (PropertyManagerException e) { throw new InternalServerErrorException(e); } - return settingsModel; } @Override diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java index 48224ef7..39831f91 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/ApplicationsServiceTest.java @@ -122,15 +122,16 @@ public void testAddApplicationEnsurePersistenceCalls() throws InvalidCredentialE @Test public void testSetApplicationAllAttributes() throws ApplicationNotFoundException, ApplicationManagerException { - Application application1 = toApplication(EXAMPLE_1); - ApplicationModel requestApplicationModel = ApplicationModel.builder().build(); - requestApplicationModel.setId(application1.getId()); - requestApplicationModel.setName("Changed Name"); - requestApplicationModel.setDescription("Changed Description"); - requestApplicationModel.setActive(false); - requestApplicationModel.setPassword("password1"); - requestApplicationModel.setRemoteAddresses(Collections.singletonList("127.0.0.5")); - Application application2 = toApplication(requestApplicationModel); + final Application application1 = toApplication(EXAMPLE_1); + final ApplicationModel requestApplicationModel = ApplicationModel.builder() + .id(application1.getId()) + .name("Changed Name") + .description("Changed Description") + .active(false) + .password("password1") + .remoteAddresses(Collections.singletonList("127.0.0.5")) + .build(); + final Application application2 = toApplication(requestApplicationModel); doReturn(application1).when(applicationManager).findById(anyLong()); doReturn(application2).when(applicationManager).update(any(Application.class)); diff --git a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java index baf1fabb..e8b9a940 100644 --- a/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java +++ b/crowd/src/test/java/com/deftdevs/bootstrapi/crowd/service/MailTemplatesServiceTest.java @@ -71,12 +71,13 @@ public void testGetMailTemplates() { @Test public void testSetMailTemplates() { - final MailTemplatesModel inputMailTemplatesModel = MailTemplatesModel.builder().build(); - inputMailTemplatesModel.setForgottenPassword("1"); - inputMailTemplatesModel.setForgottenUsername("2"); - inputMailTemplatesModel.setPasswordExpirationReminder("3"); - inputMailTemplatesModel.setEmailChangeValidation("4"); - inputMailTemplatesModel.setEmailChangeInfo("5"); + final MailTemplatesModel inputMailTemplatesModel = MailTemplatesModel.builder() + .forgottenPassword("1") + .forgottenUsername("2") + .passwordExpirationReminder("3") + .emailChangeValidation("4") + .emailChangeInfo("5") + .build(); final MailTemplatesModel outputMailTemplatesModel = mailTemplateService.setMailTemplates(inputMailTemplatesModel); diff --git a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java index 5a678a45..ca31a892 100644 --- a/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java +++ b/crowd/src/test/java/it/com/deftdevs/bootstrapi/crowd/rest/SettingsResourceFuncTest.java @@ -7,10 +7,10 @@ public class SettingsResourceFuncTest extends AbstractSettingsResourceFuncTest { @Override protected SettingsModel getExampleModel() { - final SettingsModel settingsModel = SettingsModel.builder().build(); - settingsModel.setBaseUrl(SettingsModel.EXAMPLE_1.getBaseUrl()); - settingsModel.setTitle(SettingsModel.EXAMPLE_1.getTitle()); - return settingsModel; + return SettingsModel.builder() + .baseUrl(SettingsModel.EXAMPLE_1.getBaseUrl()) + .title(SettingsModel.EXAMPLE_1.getTitle()) + .build(); } } diff --git a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java index 3d4a31cc..d739a6b7 100644 --- a/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java +++ b/jira/src/main/java/com/deftdevs/bootstrapi/jira/model/SettingsBannerModel.java @@ -1,7 +1,9 @@ package com.deftdevs.bootstrapi.jira.model; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.Builder; +import lombok.NoArgsConstructor; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; @@ -13,6 +15,8 @@ @Data @Builder +@NoArgsConstructor +@AllArgsConstructor @XmlRootElement(name = SETTINGS + "-" + SETTINGS_BANNER) @XmlAccessorType(XmlAccessType.FIELD) public class SettingsBannerModel {