From c0aef97db63ded4d6981c17a385fecb8fab7a9b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor?= Date: Sun, 27 Feb 2022 23:06:47 +0100 Subject: [PATCH 01/43] BAEL-4626 First draft of the source code for the article: https://drafts.baeldung.com/wp-admin/post.php?post=127644&action=edit --- apache-tomcat/pom.xml | 34 + apache-tomcat/sso/.dockerignore | 24 + apache-tomcat/sso/README.md | 5 + apache-tomcat/sso/docker-compose.yml | 11 + apache-tomcat/sso/pom.xml | 18 + apache-tomcat/sso/res/conf/catalina.policy | 264 + .../sso/res/conf/catalina.properties | 208 + apache-tomcat/sso/res/conf/context.xml | 31 + .../sso/res/conf/jaspic-providers.xml | 23 + .../sso/res/conf/jaspic-providers.xsd | 53 + apache-tomcat/sso/res/conf/logging.properties | 90 + apache-tomcat/sso/res/conf/server.xml | 151 + apache-tomcat/sso/res/conf/tomcat-users.xml | 59 + apache-tomcat/sso/res/conf/tomcat-users.xsd | 59 + apache-tomcat/sso/res/conf/web.xml | 4742 +++++++++++++++++ .../sso/webapps/ping/WEB-INF/web.xml | 50 + apache-tomcat/sso/webapps/ping/index.html | 9 + apache-tomcat/sso/webapps/ping/logging.html | 26 + .../sso/webapps/ping/logging_error.html | 10 + .../sso/webapps/ping/private/index.html | 9 + .../sso/webapps/pong/WEB-INF/web.xml | 51 + apache-tomcat/sso/webapps/pong/index.html | 9 + apache-tomcat/sso/webapps/pong/logging.html | 26 + .../sso/webapps/pong/logging_error.html | 10 + .../sso/webapps/pong/private/index.html | 9 + 25 files changed, 5981 insertions(+) create mode 100644 apache-tomcat/pom.xml create mode 100644 apache-tomcat/sso/.dockerignore create mode 100644 apache-tomcat/sso/README.md create mode 100644 apache-tomcat/sso/docker-compose.yml create mode 100644 apache-tomcat/sso/pom.xml create mode 100644 apache-tomcat/sso/res/conf/catalina.policy create mode 100644 apache-tomcat/sso/res/conf/catalina.properties create mode 100644 apache-tomcat/sso/res/conf/context.xml create mode 100644 apache-tomcat/sso/res/conf/jaspic-providers.xml create mode 100644 apache-tomcat/sso/res/conf/jaspic-providers.xsd create mode 100644 apache-tomcat/sso/res/conf/logging.properties create mode 100644 apache-tomcat/sso/res/conf/server.xml create mode 100644 apache-tomcat/sso/res/conf/tomcat-users.xml create mode 100644 apache-tomcat/sso/res/conf/tomcat-users.xsd create mode 100644 apache-tomcat/sso/res/conf/web.xml create mode 100644 apache-tomcat/sso/webapps/ping/WEB-INF/web.xml create mode 100644 apache-tomcat/sso/webapps/ping/index.html create mode 100644 apache-tomcat/sso/webapps/ping/logging.html create mode 100644 apache-tomcat/sso/webapps/ping/logging_error.html create mode 100644 apache-tomcat/sso/webapps/ping/private/index.html create mode 100644 apache-tomcat/sso/webapps/pong/WEB-INF/web.xml create mode 100644 apache-tomcat/sso/webapps/pong/index.html create mode 100644 apache-tomcat/sso/webapps/pong/logging.html create mode 100644 apache-tomcat/sso/webapps/pong/logging_error.html create mode 100644 apache-tomcat/sso/webapps/pong/private/index.html diff --git a/apache-tomcat/pom.xml b/apache-tomcat/pom.xml new file mode 100644 index 0000000000..36487f2108 --- /dev/null +++ b/apache-tomcat/pom.xml @@ -0,0 +1,34 @@ + + + 4.0.0 + + com.baeldung + apache-tomcat + 1.0.0-SNAPSHOT + apache-tomcat + pom + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + sso + + + + install + + + + org.codehaus.mojo + exec-maven-plugin + + + + + \ No newline at end of file diff --git a/apache-tomcat/sso/.dockerignore b/apache-tomcat/sso/.dockerignore new file mode 100644 index 0000000000..95520b4e81 --- /dev/null +++ b/apache-tomcat/sso/.dockerignore @@ -0,0 +1,24 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +README.md diff --git a/apache-tomcat/sso/README.md b/apache-tomcat/sso/README.md new file mode 100644 index 0000000000..2b515178e0 --- /dev/null +++ b/apache-tomcat/sso/README.md @@ -0,0 +1,5 @@ +### Related articles + +### Launch Example using Docker + +$ docker-compose up \ No newline at end of file diff --git a/apache-tomcat/sso/docker-compose.yml b/apache-tomcat/sso/docker-compose.yml new file mode 100644 index 0000000000..e150de7ba1 --- /dev/null +++ b/apache-tomcat/sso/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.4' + +services: + tomcatsso: + image: tomcat:10-jdk17-openjdk-slim-buster + volumes: + - ./res/conf:/usr/local/tomcat/conf + - ./webapps:/usr/local/tomcat/webapps + ports: + - 8080:8080 + command: ["catalina.sh", "run"] \ No newline at end of file diff --git a/apache-tomcat/sso/pom.xml b/apache-tomcat/sso/pom.xml new file mode 100644 index 0000000000..d46fe45f66 --- /dev/null +++ b/apache-tomcat/sso/pom.xml @@ -0,0 +1,18 @@ + + + 4.0.0 + + com.baeldung.apache_tomcat + sso + 1.0.0-SNAPSHOT + pom + + + com.baeldung + apache-tomcat + 1.0.0-SNAPSHOT + + + diff --git a/apache-tomcat/sso/res/conf/catalina.policy b/apache-tomcat/sso/res/conf/catalina.policy new file mode 100644 index 0000000000..7aab95dee5 --- /dev/null +++ b/apache-tomcat/sso/res/conf/catalina.policy @@ -0,0 +1,264 @@ +// Licensed to the Apache Software Foundation (ASF) under one or more +// contributor license agreements. See the NOTICE file distributed with +// this work for additional information regarding copyright ownership. +// The ASF licenses this file to You under the Apache License, Version 2.0 +// (the "License"); you may not use this file except in compliance with +// the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// ============================================================================ +// catalina.policy - Security Policy Permissions for Tomcat +// +// This file contains a default set of security policies to be enforced (by the +// JVM) when Catalina is executed with the "-security" option. In addition +// to the permissions granted here, the following additional permissions are +// granted to each web application: +// +// * Read access to the web application's document root directory +// * Read, write and delete access to the web application's working directory +// ============================================================================ + + +// ========== SYSTEM CODE PERMISSIONS ========================================= + + +// These permissions apply to javac +grant codeBase "file:${java.home}/lib/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to all shared system extensions +grant codeBase "file:${java.home}/jre/lib/ext/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to javac when ${java.home} points at $JAVA_HOME/jre +grant codeBase "file:${java.home}/../lib/-" { + permission java.security.AllPermission; +}; + +// These permissions apply to all shared system extensions when +// ${java.home} points at $JAVA_HOME/jre +grant codeBase "file:${java.home}/lib/ext/-" { + permission java.security.AllPermission; +}; + +// This permission is required when using javac to compile JSPs on Java 9 +// onwards +//grant codeBase "jrt:/jdk.compiler" { +// permission java.security.AllPermission; +//}; + + +// ========== CATALINA CODE PERMISSIONS ======================================= + +// These permissions apply to the daemon code +grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" { + permission java.security.AllPermission; +}; + +// These permissions apply to the logging API +// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home}, +// update this section accordingly. +// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} +grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { + permission java.io.FilePermission + "${java.home}${file.separator}lib${file.separator}logging.properties", "read"; + + permission java.io.FilePermission + "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read"; + permission java.io.FilePermission + "${catalina.base}${file.separator}logs", "read, write"; + permission java.io.FilePermission + "${catalina.base}${file.separator}logs${file.separator}*", "read, write, delete"; + + permission java.lang.RuntimePermission "shutdownHooks"; + permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "setContextClassLoader"; + + permission java.lang.management.ManagementPermission "monitor"; + + permission java.util.logging.LoggingPermission "control"; + + permission java.util.PropertyPermission "java.util.logging.config.class", "read"; + permission java.util.PropertyPermission "java.util.logging.config.file", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncMaxRecordCount", "read"; + permission java.util.PropertyPermission "org.apache.juli.AsyncOverflowDropType", "read"; + permission java.util.PropertyPermission "org.apache.juli.ClassLoaderLogManager.debug", "read"; + permission java.util.PropertyPermission "catalina.base", "read"; + + // Note: To enable per context logging configuration, permit read access to + // the appropriate file. Be sure that the logging configuration is + // secure before enabling such access. + // E.g. for the examples web application (uncomment and unwrap + // the following to be on a single line): + // permission java.io.FilePermission "${catalina.base}${file.separator} + // webapps${file.separator}examples${file.separator}WEB-INF + // ${file.separator}classes${file.separator}logging.properties", "read"; +}; + +// These permissions apply to the server startup code +grant codeBase "file:${catalina.home}/bin/bootstrap.jar" { + permission java.security.AllPermission; +}; + +// These permissions apply to the servlet API classes +// and those that are shared across all class loaders +// located in the "lib" directory +grant codeBase "file:${catalina.home}/lib/-" { + permission java.security.AllPermission; +}; + + +// If using a per instance lib directory, i.e. ${catalina.base}/lib, +// then the following permission will need to be uncommented +// grant codeBase "file:${catalina.base}/lib/-" { +// permission java.security.AllPermission; +// }; + + +// ========== WEB APPLICATION PERMISSIONS ===================================== + + +// These permissions are granted by default to all web applications +// In addition, a web application will be given a read FilePermission +// for all files and directories in its document root. +grant { + // Required for JNDI lookup of named JDBC DataSource's and + // javamail named MimePart DataSource used to send mail + permission java.util.PropertyPermission "java.home", "read"; + permission java.util.PropertyPermission "java.naming.*", "read"; + permission java.util.PropertyPermission "javax.sql.*", "read"; + + // OS Specific properties to allow read access + permission java.util.PropertyPermission "os.name", "read"; + permission java.util.PropertyPermission "os.version", "read"; + permission java.util.PropertyPermission "os.arch", "read"; + permission java.util.PropertyPermission "file.separator", "read"; + permission java.util.PropertyPermission "path.separator", "read"; + permission java.util.PropertyPermission "line.separator", "read"; + + // JVM properties to allow read access + permission java.util.PropertyPermission "java.version", "read"; + permission java.util.PropertyPermission "java.vendor", "read"; + permission java.util.PropertyPermission "java.vendor.url", "read"; + permission java.util.PropertyPermission "java.class.version", "read"; + permission java.util.PropertyPermission "java.specification.version", "read"; + permission java.util.PropertyPermission "java.specification.vendor", "read"; + permission java.util.PropertyPermission "java.specification.name", "read"; + + permission java.util.PropertyPermission "java.vm.specification.version", "read"; + permission java.util.PropertyPermission "java.vm.specification.vendor", "read"; + permission java.util.PropertyPermission "java.vm.specification.name", "read"; + permission java.util.PropertyPermission "java.vm.version", "read"; + permission java.util.PropertyPermission "java.vm.vendor", "read"; + permission java.util.PropertyPermission "java.vm.name", "read"; + + // Required for OpenJMX + permission java.lang.RuntimePermission "getAttribute"; + + // Allow read of JAXP compliant XML parser debug + permission java.util.PropertyPermission "jaxp.debug", "read"; + + // All JSPs need to be able to read this package + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat"; + + // Precompiled JSPs need access to these packages. + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime"; + permission java.lang.RuntimePermission + "accessClassInPackage.org.apache.jasper.runtime.*"; + + // Applications using WebSocket need to be able to access these packages + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; +}; + + +// The Manager application needs access to the following packages to support the +// session display functionality. It also requires the custom Tomcat +// DeployXmlPermission to enable the use of META-INF/context.xml +// These settings support the following configurations: +// - default CATALINA_HOME == CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, shared Manager in CATALINA_HOME +grant codeBase "file:${catalina.base}/webapps/manager/-" { + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; + permission org.apache.catalina.security.DeployXmlPermission "manager"; +}; +grant codeBase "file:${catalina.home}/webapps/manager/-" { + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.ha.session"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.util"; + permission org.apache.catalina.security.DeployXmlPermission "manager"; +}; + +// The Host Manager application needs the custom Tomcat DeployXmlPermission to +// enable the use of META-INF/context.xml +// These settings support the following configurations: +// - default CATALINA_HOME == CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, per instance Host Manager in CATALINA_BASE +// - CATALINA_HOME != CATALINA_BASE, shared Host Manager in CATALINA_HOME +grant codeBase "file:${catalina.base}/webapps/host-manager/-" { + permission org.apache.catalina.security.DeployXmlPermission "host-manager"; +}; +grant codeBase "file:${catalina.home}/webapps/host-manager/-" { + permission org.apache.catalina.security.DeployXmlPermission "host-manager"; +}; + + +// You can assign additional permissions to particular web applications by +// adding additional "grant" entries here, based on the code base for that +// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files. +// +// Different permissions can be granted to JSP pages, classes loaded from +// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/ +// directory, or even to individual jar files in the /WEB-INF/lib/ directory. +// +// For instance, assume that the standard "examples" application +// included a JDBC driver that needed to establish a network connection to the +// corresponding database and used the scrape taglib to get the weather from +// the NOAA web server. You might create a "grant" entries like this: +// +// The permissions granted to the context root directory apply to JSP pages. +// grant codeBase "file:${catalina.base}/webapps/examples/-" { +// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; +// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; +// }; +// +// The permissions granted to the context WEB-INF/classes directory +// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" { +// }; +// +// The permission granted to your JDBC driver +// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" { +// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect"; +// }; +// The permission granted to the scrape taglib +// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" { +// permission java.net.SocketPermission "*.noaa.gov:80", "connect"; +// }; + +// To grant permissions for web applications using packed WAR files, use the +// Tomcat specific WAR url scheme. +// +// The permissions granted to the entire web application +// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/-" { +// }; +// +// The permissions granted to a specific JAR +// grant codeBase "war:file:${catalina.base}/webapps/examples.war*/WEB-INF/lib/foo.jar" { +// }; \ No newline at end of file diff --git a/apache-tomcat/sso/res/conf/catalina.properties b/apache-tomcat/sso/res/conf/catalina.properties new file mode 100644 index 0000000000..d73a8bfbb2 --- /dev/null +++ b/apache-tomcat/sso/res/conf/catalina.properties @@ -0,0 +1,208 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageAccess unless the +# corresponding RuntimePermission ("accessClassInPackage."+package) has +# been granted. +package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat. +# +# List of comma-separated packages that start with or equal this string +# will cause a security exception to be thrown when +# passed to checkPackageDefinition unless the +# corresponding RuntimePermission ("defineClassInPackage."+package) has +# been granted. +# +# by default, no packages are restricted for definition, and none of +# the class loaders supplied with the JDK call checkPackageDefinition. +# +package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,\ +org.apache.jasper.,org.apache.naming.,org.apache.tomcat. + +# +# +# List of comma-separated paths defining the contents of the "common" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank,the JVM system loader will be used as Catalina's "common" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# +# Note: Values are enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar" + +# +# List of comma-separated paths defining the contents of the "server" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute. +# If left as blank, the "common" loader will be used as Catalina's "server" +# loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# +# Note: Values may be enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +server.loader= + +# +# List of comma-separated paths defining the contents of the "shared" +# classloader. Prefixes should be used to define what is the repository type. +# Path may be relative to the CATALINA_BASE path or absolute. If left as blank, +# the "common" loader will be used as Catalina's "shared" loader. +# Examples: +# "foo": Add this folder as a class repository +# "foo/*.jar": Add all the JARs of the specified folder as class +# repositories +# "foo/bar.jar": Add bar.jar as a class repository +# Please note that for single jars, e.g. bar.jar, you need the URL form +# starting with file:. +# +# Note: Values may be enclosed in double quotes ("...") in case either the +# ${catalina.base} path or the ${catalina.home} path contains a comma. +# Because double quotes are used for quoting, the double quote character +# may not appear in a path. +shared.loader= + +# Default list of JAR files that should not be scanned using the JarScanner +# functionality. This is typically used to scan JARs for configuration +# information. JARs that do not contain such information may be excluded from +# the scan to speed up the scanning process. This is the default list. JARs on +# this list are excluded from all scans. The list must be a comma separated list +# of JAR file names. +# The list of JARs to skip may be over-ridden at a Context level for individual +# scan types by configuring a JarScanner with a nested JarScanFilter. +# The JARs listed below include: +# - Tomcat Bootstrap JARs +# - Tomcat API JARs +# - Catalina JARs +# - Jasper JARs +# - Tomcat JARs +# - Common non-Tomcat JARs +# - Test JARs (JUnit, Cobertura and dependencies) +tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\ +annotations-api.jar,\ +ant-junit*.jar,\ +ant-launcher.jar,\ +ant.jar,\ +asm-*.jar,\ +aspectj*.jar,\ +bootstrap.jar,\ +catalina-ant.jar,\ +catalina-ha.jar,\ +catalina-ssi.jar,\ +catalina-storeconfig.jar,\ +catalina-tribes.jar,\ +catalina.jar,\ +cglib-*.jar,\ +cobertura-*.jar,\ +commons-beanutils*.jar,\ +commons-codec*.jar,\ +commons-collections*.jar,\ +commons-daemon.jar,\ +commons-dbcp*.jar,\ +commons-digester*.jar,\ +commons-fileupload*.jar,\ +commons-httpclient*.jar,\ +commons-io*.jar,\ +commons-lang*.jar,\ +commons-logging*.jar,\ +commons-math*.jar,\ +commons-pool*.jar,\ +derby-*.jar,\ +dom4j-*.jar,\ +easymock-*.jar,\ +ecj-*.jar,\ +el-api.jar,\ +geronimo-spec-jaxrpc*.jar,\ +h2*.jar,\ +hamcrest-*.jar,\ +hibernate*.jar,\ +httpclient*.jar,\ +icu4j-*.jar,\ +jakartaee-migration-*.jar,\ +jasper-el.jar,\ +jasper.jar,\ +jaspic-api.jar,\ +jaxb-*.jar,\ +jaxen-*.jar,\ +jdom-*.jar,\ +jetty-*.jar,\ +jmx-tools.jar,\ +jmx.jar,\ +jsp-api.jar,\ +jstl.jar,\ +jta*.jar,\ +junit-*.jar,\ +junit.jar,\ +log4j*.jar,\ +mail*.jar,\ +objenesis-*.jar,\ +oraclepki.jar,\ +oro-*.jar,\ +servlet-api-*.jar,\ +servlet-api.jar,\ +slf4j*.jar,\ +taglibs-standard-spec-*.jar,\ +tagsoup-*.jar,\ +tomcat-api.jar,\ +tomcat-coyote.jar,\ +tomcat-dbcp.jar,\ +tomcat-i18n-*.jar,\ +tomcat-jdbc.jar,\ +tomcat-jni.jar,\ +tomcat-juli-adapters.jar,\ +tomcat-juli.jar,\ +tomcat-util-scan.jar,\ +tomcat-util.jar,\ +tomcat-websocket.jar,\ +tools.jar,\ +websocket-api.jar,\ +wsdl4j*.jar,\ +xercesImpl.jar,\ +xml-apis.jar,\ +xmlParserAPIs-*.jar,\ +xmlParserAPIs.jar,\ +xom-*.jar + +# Default list of JAR files that should be scanned that overrides the default +# jarsToSkip list above. This is typically used to include a specific JAR that +# has been excluded by a broad file name pattern in the jarsToSkip list. +# The list of JARs to scan may be over-ridden at a Context level for individual +# scan types by configuring a JarScanner with a nested JarScanFilter. +tomcat.util.scan.StandardJarScanFilter.jarsToScan=\ +log4j-taglib*.jar,\ +log4j-web*.jar,\ +log4javascript*.jar,\ +slf4j-taglib*.jar + +# String cache configuration. +tomcat.util.buf.StringCache.byte.enabled=true +#tomcat.util.buf.StringCache.char.enabled=true +#tomcat.util.buf.StringCache.trainThreshold=500000 +#tomcat.util.buf.StringCache.cacheSize=5000 diff --git a/apache-tomcat/sso/res/conf/context.xml b/apache-tomcat/sso/res/conf/context.xml new file mode 100644 index 0000000000..0a7cfaca8e --- /dev/null +++ b/apache-tomcat/sso/res/conf/context.xml @@ -0,0 +1,31 @@ + + + + + + + + WEB-INF/web.xml + WEB-INF/tomcat-web.xml + ${catalina.base}/conf/web.xml + + + + diff --git a/apache-tomcat/sso/res/conf/jaspic-providers.xml b/apache-tomcat/sso/res/conf/jaspic-providers.xml new file mode 100644 index 0000000000..cdebf87253 --- /dev/null +++ b/apache-tomcat/sso/res/conf/jaspic-providers.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/apache-tomcat/sso/res/conf/jaspic-providers.xsd b/apache-tomcat/sso/res/conf/jaspic-providers.xsd new file mode 100644 index 0000000000..1004a11914 --- /dev/null +++ b/apache-tomcat/sso/res/conf/jaspic-providers.xsd @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apache-tomcat/sso/res/conf/logging.properties b/apache-tomcat/sso/res/conf/logging.properties new file mode 100644 index 0000000000..9413465201 --- /dev/null +++ b/apache-tomcat/sso/res/conf/logging.properties @@ -0,0 +1,90 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler + +.handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler + +############################################################ +# Handler specific properties. +# Describes specific configuration info for Handlers. +############################################################ + +1catalina.org.apache.juli.AsyncFileHandler.level = ALL +1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina. +1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90 +1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +2localhost.org.apache.juli.AsyncFileHandler.level = FINE +2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost. +2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90 +2localhost.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +3manager.org.apache.juli.AsyncFileHandler.level = FINE +3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +3manager.org.apache.juli.AsyncFileHandler.prefix = manager. +3manager.org.apache.juli.AsyncFileHandler.maxDays = 90 +3manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +4host-manager.org.apache.juli.AsyncFileHandler.level = FINE +4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs +4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager. +4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90 +4host-manager.org.apache.juli.AsyncFileHandler.encoding = UTF-8 + +java.util.logging.ConsoleHandler.level = FINE +java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter +java.util.logging.ConsoleHandler.encoding = UTF-8 + +org.apache.catalina.authenticator.level = ALL +org.apache.catalina.authenticator.formatter = org.apache.juli.OneLineFormatter +org.apache.catalina.authenticator.encoding = UTF-8 + +org.apache.catalina.Realm.level = ALL +org.apache.catalina.Realm.formatter = org.apache.juli.OneLineFormatter +org.apache.catalina.Realm.encoding = UTF-8 + +org.apache.catalina.realm.level = ALL +org.apache.catalina.realm.formatter = org.apache.juli.OneLineFormatter +org.apache.catalina.realm.encoding = UTF-8 + +############################################################ +# Facility specific properties. +# Provides extra control for each logger. +############################################################ + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = ALL +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.AsyncFileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.AsyncFileHandler + +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO +org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.AsyncFileHandler + +# For example, set the org.apache.catalina.util.LifecycleBase logger to log +# each component that extends LifecycleBase changing state: +# org.apache.catalina.util.LifecycleBase.level = FINE + +# To see debug messages in TldLocationsCache, uncomment the following line: +#org.apache.jasper.compiler.TldLocationsCache.level = FINE + +# To see debug messages for HTTP/2 handling, uncomment the following line: +#org.apache.coyote.http2.level = FINE + +# To see debug messages for WebSocket handling, uncomment the following line: +#org.apache.tomcat.websocket.level = FINE diff --git a/apache-tomcat/sso/res/conf/server.xml b/apache-tomcat/sso/res/conf/server.xml new file mode 100644 index 0000000000..35027c9b5f --- /dev/null +++ b/apache-tomcat/sso/res/conf/server.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apache-tomcat/sso/res/conf/tomcat-users.xml b/apache-tomcat/sso/res/conf/tomcat-users.xml new file mode 100644 index 0000000000..2372af6e2b --- /dev/null +++ b/apache-tomcat/sso/res/conf/tomcat-users.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + diff --git a/apache-tomcat/sso/res/conf/tomcat-users.xsd b/apache-tomcat/sso/res/conf/tomcat-users.xsd new file mode 100644 index 0000000000..6a3446c0ef --- /dev/null +++ b/apache-tomcat/sso/res/conf/tomcat-users.xsd @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apache-tomcat/sso/res/conf/web.xml b/apache-tomcat/sso/res/conf/web.xml new file mode 100644 index 0000000000..130a49dcdb --- /dev/null +++ b/apache-tomcat/sso/res/conf/web.xml @@ -0,0 +1,4742 @@ + + + + + + + + + + + + + + + + + UTF-8 + UTF-8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.apache.catalina.servlets.DefaultServlet + + debug + 0 + + + listings + false + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + fork + false + + + xpoweredBy + false + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + / + + + + + jsp + *.jsp + *.jspx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + 123 + application/vnd.lotus-1-2-3 + + + 3dml + text/vnd.in3d.3dml + + + 3ds + image/x-3ds + + + 3g2 + video/3gpp2 + + + 3gp + video/3gpp + + + 7z + application/x-7z-compressed + + + aab + application/x-authorware-bin + + + aac + audio/x-aac + + + aam + application/x-authorware-map + + + aas + application/x-authorware-seg + + + abs + audio/x-mpeg + + + abw + application/x-abiword + + + ac + application/pkix-attr-cert + + + acc + application/vnd.americandynamics.acc + + + ace + application/x-ace-compressed + + + acu + application/vnd.acucobol + + + acutc + application/vnd.acucorp + + + adp + audio/adpcm + + + aep + application/vnd.audiograph + + + afm + application/x-font-type1 + + + afp + application/vnd.ibm.modcap + + + ahead + application/vnd.ahead.space + + + ai + application/postscript + + + aif + audio/x-aiff + + + aifc + audio/x-aiff + + + aiff + audio/x-aiff + + + aim + application/x-aim + + + air + application/vnd.adobe.air-application-installer-package+zip + + + ait + application/vnd.dvb.ait + + + ami + application/vnd.amiga.ami + + + anx + application/annodex + + + apk + application/vnd.android.package-archive + + + appcache + text/cache-manifest + + + application + application/x-ms-application + + + apr + application/vnd.lotus-approach + + + arc + application/x-freearc + + + art + image/x-jg + + + asc + application/pgp-signature + + + asf + video/x-ms-asf + + + asm + text/x-asm + + + aso + application/vnd.accpac.simply.aso + + + asx + video/x-ms-asf + + + atc + application/vnd.acucorp + + + atom + application/atom+xml + + + atomcat + application/atomcat+xml + + + atomsvc + application/atomsvc+xml + + + atx + application/vnd.antix.game-component + + + au + audio/basic + + + avi + video/x-msvideo + + + avx + video/x-rad-screenplay + + + aw + application/applixware + + + axa + audio/annodex + + + axv + video/annodex + + + azf + application/vnd.airzip.filesecure.azf + + + azs + application/vnd.airzip.filesecure.azs + + + azw + application/vnd.amazon.ebook + + + bat + application/x-msdownload + + + bcpio + application/x-bcpio + + + bdf + application/x-font-bdf + + + bdm + application/vnd.syncml.dm+wbxml + + + bed + application/vnd.realvnc.bed + + + bh2 + application/vnd.fujitsu.oasysprs + + + bin + application/octet-stream + + + blb + application/x-blorb + + + blorb + application/x-blorb + + + bmi + application/vnd.bmi + + + bmp + image/bmp + + + body + text/html + + + book + application/vnd.framemaker + + + box + application/vnd.previewsystems.box + + + boz + application/x-bzip2 + + + bpk + application/octet-stream + + + btif + image/prs.btif + + + bz + application/x-bzip + + + bz2 + application/x-bzip2 + + + c + text/x-c + + + c11amc + application/vnd.cluetrust.cartomobile-config + + + c11amz + application/vnd.cluetrust.cartomobile-config-pkg + + + c4d + application/vnd.clonk.c4group + + + c4f + application/vnd.clonk.c4group + + + c4g + application/vnd.clonk.c4group + + + c4p + application/vnd.clonk.c4group + + + c4u + application/vnd.clonk.c4group + + + cab + application/vnd.ms-cab-compressed + + + caf + audio/x-caf + + + cap + application/vnd.tcpdump.pcap + + + car + application/vnd.curl.car + + + cat + application/vnd.ms-pki.seccat + + + cb7 + application/x-cbr + + + cba + application/x-cbr + + + cbr + application/x-cbr + + + cbt + application/x-cbr + + + cbz + application/x-cbr + + + cc + text/x-c + + + cct + application/x-director + + + ccxml + application/ccxml+xml + + + cdbcmsg + application/vnd.contact.cmsg + + + cdf + application/x-cdf + + + cdkey + application/vnd.mediastation.cdkey + + + cdmia + application/cdmi-capability + + + cdmic + application/cdmi-container + + + cdmid + application/cdmi-domain + + + cdmio + application/cdmi-object + + + cdmiq + application/cdmi-queue + + + cdx + chemical/x-cdx + + + cdxml + application/vnd.chemdraw+xml + + + cdy + application/vnd.cinderella + + + cer + application/pkix-cert + + + cfs + application/x-cfs-compressed + + + cgm + image/cgm + + + chat + application/x-chat + + + chm + application/vnd.ms-htmlhelp + + + chrt + application/vnd.kde.kchart + + + cif + chemical/x-cif + + + cii + application/vnd.anser-web-certificate-issue-initiation + + + cil + application/vnd.ms-artgalry + + + cla + application/vnd.claymore + + + class + application/java + + + clkk + application/vnd.crick.clicker.keyboard + + + clkp + application/vnd.crick.clicker.palette + + + clkt + application/vnd.crick.clicker.template + + + clkw + application/vnd.crick.clicker.wordbank + + + clkx + application/vnd.crick.clicker + + + clp + application/x-msclip + + + cmc + application/vnd.cosmocaller + + + cmdf + chemical/x-cmdf + + + cml + chemical/x-cml + + + cmp + application/vnd.yellowriver-custom-menu + + + cmx + image/x-cmx + + + cod + application/vnd.rim.cod + + + com + application/x-msdownload + + + conf + text/plain + + + cpio + application/x-cpio + + + cpp + text/x-c + + + cpt + application/mac-compactpro + + + crd + application/x-mscardfile + + + crl + application/pkix-crl + + + crt + application/x-x509-ca-cert + + + cryptonote + application/vnd.rig.cryptonote + + + csh + application/x-csh + + + csml + chemical/x-csml + + + csp + application/vnd.commonspace + + + css + text/css + + + cst + application/x-director + + + csv + text/csv + + + cu + application/cu-seeme + + + curl + text/vnd.curl + + + cww + application/prs.cww + + + cxt + application/x-director + + + cxx + text/x-c + + + dae + model/vnd.collada+xml + + + daf + application/vnd.mobius.daf + + + dart + application/vnd.dart + + + dataless + application/vnd.fdsn.seed + + + davmount + application/davmount+xml + + + dbk + application/docbook+xml + + + dcr + application/x-director + + + dcurl + text/vnd.curl.dcurl + + + dd2 + application/vnd.oma.dd2+xml + + + ddd + application/vnd.fujixerox.ddd + + + deb + application/x-debian-package + + + def + text/plain + + + deploy + application/octet-stream + + + der + application/x-x509-ca-cert + + + dfac + application/vnd.dreamfactory + + + dgc + application/x-dgc-compressed + + + dib + image/bmp + + + dic + text/x-c + + + dir + application/x-director + + + dis + application/vnd.mobius.dis + + + dist + application/octet-stream + + + distz + application/octet-stream + + + djv + image/vnd.djvu + + + djvu + image/vnd.djvu + + + dll + application/x-msdownload + + + dmg + application/x-apple-diskimage + + + dmp + application/vnd.tcpdump.pcap + + + dms + application/octet-stream + + + dna + application/vnd.dna + + + doc + application/msword + + + docm + application/vnd.ms-word.document.macroenabled.12 + + + docx + application/vnd.openxmlformats-officedocument.wordprocessingml.document + + + dot + application/msword + + + dotm + application/vnd.ms-word.template.macroenabled.12 + + + dotx + application/vnd.openxmlformats-officedocument.wordprocessingml.template + + + dp + application/vnd.osgi.dp + + + dpg + application/vnd.dpgraph + + + dra + audio/vnd.dra + + + dsc + text/prs.lines.tag + + + dssc + application/dssc+der + + + dtb + application/x-dtbook+xml + + + dtd + application/xml-dtd + + + dts + audio/vnd.dts + + + dtshd + audio/vnd.dts.hd + + + dump + application/octet-stream + + + dv + video/x-dv + + + dvb + video/vnd.dvb.file + + + dvi + application/x-dvi + + + dwf + model/vnd.dwf + + + dwg + image/vnd.dwg + + + dxf + image/vnd.dxf + + + dxp + application/vnd.spotfire.dxp + + + dxr + application/x-director + + + ecelp4800 + audio/vnd.nuera.ecelp4800 + + + ecelp7470 + audio/vnd.nuera.ecelp7470 + + + ecelp9600 + audio/vnd.nuera.ecelp9600 + + + ecma + application/ecmascript + + + edm + application/vnd.novadigm.edm + + + edx + application/vnd.novadigm.edx + + + efif + application/vnd.picsel + + + ei6 + application/vnd.pg.osasli + + + elc + application/octet-stream + + + emf + application/x-msmetafile + + + eml + message/rfc822 + + + emma + application/emma+xml + + + emz + application/x-msmetafile + + + eol + audio/vnd.digital-winds + + + eot + application/vnd.ms-fontobject + + + eps + application/postscript + + + epub + application/epub+zip + + + es3 + application/vnd.eszigno3+xml + + + esa + application/vnd.osgi.subsystem + + + esf + application/vnd.epson.esf + + + et3 + application/vnd.eszigno3+xml + + + etx + text/x-setext + + + eva + application/x-eva + + + evy + application/x-envoy + + + exe + application/octet-stream + + + exi + application/exi + + + ext + application/vnd.novadigm.ext + + + ez + application/andrew-inset + + + ez2 + application/vnd.ezpix-album + + + ez3 + application/vnd.ezpix-package + + + f + text/x-fortran + + + f4v + video/x-f4v + + + f77 + text/x-fortran + + + f90 + text/x-fortran + + + fbs + image/vnd.fastbidsheet + + + fcdt + application/vnd.adobe.formscentral.fcdt + + + fcs + application/vnd.isac.fcs + + + fdf + application/vnd.fdf + + + fe_launch + application/vnd.denovo.fcselayout-link + + + fg5 + application/vnd.fujitsu.oasysgp + + + fgd + application/x-director + + + fh + image/x-freehand + + + fh4 + image/x-freehand + + + fh5 + image/x-freehand + + + fh7 + image/x-freehand + + + fhc + image/x-freehand + + + fig + application/x-xfig + + + flac + audio/flac + + + fli + video/x-fli + + + flo + application/vnd.micrografx.flo + + + flv + video/x-flv + + + flw + application/vnd.kde.kivio + + + flx + text/vnd.fmi.flexstor + + + fly + text/vnd.fly + + + fm + application/vnd.framemaker + + + fnc + application/vnd.frogans.fnc + + + for + text/x-fortran + + + fpx + image/vnd.fpx + + + frame + application/vnd.framemaker + + + fsc + application/vnd.fsc.weblaunch + + + fst + image/vnd.fst + + + ftc + application/vnd.fluxtime.clip + + + fti + application/vnd.anser-web-funds-transfer-initiation + + + fvt + video/vnd.fvt + + + fxp + application/vnd.adobe.fxp + + + fxpl + application/vnd.adobe.fxp + + + fzs + application/vnd.fuzzysheet + + + g2w + application/vnd.geoplan + + + g3 + image/g3fax + + + g3w + application/vnd.geospace + + + gac + application/vnd.groove-account + + + gam + application/x-tads + + + gbr + application/rpki-ghostbusters + + + gca + application/x-gca-compressed + + + gdl + model/vnd.gdl + + + geo + application/vnd.dynageo + + + gex + application/vnd.geometry-explorer + + + ggb + application/vnd.geogebra.file + + + ggt + application/vnd.geogebra.tool + + + ghf + application/vnd.groove-help + + + gif + image/gif + + + gim + application/vnd.groove-identity-message + + + gml + application/gml+xml + + + gmx + application/vnd.gmx + + + gnumeric + application/x-gnumeric + + + gph + application/vnd.flographit + + + gpx + application/gpx+xml + + + gqf + application/vnd.grafeq + + + gqs + application/vnd.grafeq + + + gram + application/srgs + + + gramps + application/x-gramps-xml + + + gre + application/vnd.geometry-explorer + + + grv + application/vnd.groove-injector + + + grxml + application/srgs+xml + + + gsf + application/x-font-ghostscript + + + gtar + application/x-gtar + + + gtm + application/vnd.groove-tool-message + + + gtw + model/vnd.gtw + + + gv + text/vnd.graphviz + + + gxf + application/gxf + + + gxt + application/vnd.geonext + + + gz + application/x-gzip + + + h + text/x-c + + + h261 + video/h261 + + + h263 + video/h263 + + + h264 + video/h264 + + + hal + application/vnd.hal+xml + + + hbci + application/vnd.hbci + + + hdf + application/x-hdf + + + hh + text/x-c + + + hlp + application/winhlp + + + hpgl + application/vnd.hp-hpgl + + + hpid + application/vnd.hp-hpid + + + hps + application/vnd.hp-hps + + + hqx + application/mac-binhex40 + + + htc + text/x-component + + + htke + application/vnd.kenameaapp + + + htm + text/html + + + html + text/html + + + hvd + application/vnd.yamaha.hv-dic + + + hvp + application/vnd.yamaha.hv-voice + + + hvs + application/vnd.yamaha.hv-script + + + i2g + application/vnd.intergeo + + + icc + application/vnd.iccprofile + + + ice + x-conference/x-cooltalk + + + icm + application/vnd.iccprofile + + + ico + image/x-icon + + + ics + text/calendar + + + ief + image/ief + + + ifb + text/calendar + + + ifm + application/vnd.shana.informed.formdata + + + iges + model/iges + + + igl + application/vnd.igloader + + + igm + application/vnd.insors.igm + + + igs + model/iges + + + igx + application/vnd.micrografx.igx + + + iif + application/vnd.shana.informed.interchange + + + imp + application/vnd.accpac.simply.imp + + + ims + application/vnd.ms-ims + + + in + text/plain + + + ink + application/inkml+xml + + + inkml + application/inkml+xml + + + install + application/x-install-instructions + + + iota + application/vnd.astraea-software.iota + + + ipfix + application/ipfix + + + ipk + application/vnd.shana.informed.package + + + irm + application/vnd.ibm.rights-management + + + irp + application/vnd.irepository.package+xml + + + iso + application/x-iso9660-image + + + itp + application/vnd.shana.informed.formtemplate + + + ivp + application/vnd.immervision-ivp + + + ivu + application/vnd.immervision-ivu + + + jad + text/vnd.sun.j2me.app-descriptor + + + jam + application/vnd.jam + + + jar + application/java-archive + + + java + text/x-java-source + + + jisp + application/vnd.jisp + + + jlt + application/vnd.hp-jlyt + + + jnlp + application/x-java-jnlp-file + + + joda + application/vnd.joost.joda-archive + + + jpe + image/jpeg + + + jpeg + image/jpeg + + + jpg + image/jpeg + + + jpgm + video/jpm + + + jpgv + video/jpeg + + + jpm + video/jpm + + + js + application/javascript + + + jsf + text/plain + + + json + application/json + + + jsonml + application/jsonml+json + + + jspf + text/plain + + + kar + audio/midi + + + karbon + application/vnd.kde.karbon + + + kfo + application/vnd.kde.kformula + + + kia + application/vnd.kidspiration + + + kml + application/vnd.google-earth.kml+xml + + + kmz + application/vnd.google-earth.kmz + + + kne + application/vnd.kinar + + + knp + application/vnd.kinar + + + kon + application/vnd.kde.kontour + + + kpr + application/vnd.kde.kpresenter + + + kpt + application/vnd.kde.kpresenter + + + kpxx + application/vnd.ds-keypoint + + + ksp + application/vnd.kde.kspread + + + ktr + application/vnd.kahootz + + + ktx + image/ktx + + + ktz + application/vnd.kahootz + + + kwd + application/vnd.kde.kword + + + kwt + application/vnd.kde.kword + + + lasxml + application/vnd.las.las+xml + + + latex + application/x-latex + + + lbd + application/vnd.llamagraphics.life-balance.desktop + + + lbe + application/vnd.llamagraphics.life-balance.exchange+xml + + + les + application/vnd.hhe.lesson-player + + + lha + application/x-lzh-compressed + + + link66 + application/vnd.route66.link66+xml + + + list + text/plain + + + list3820 + application/vnd.ibm.modcap + + + listafp + application/vnd.ibm.modcap + + + lnk + application/x-ms-shortcut + + + log + text/plain + + + lostxml + application/lost+xml + + + lrf + application/octet-stream + + + lrm + application/vnd.ms-lrm + + + ltf + application/vnd.frogans.ltf + + + lvp + audio/vnd.lucent.voice + + + lwp + application/vnd.lotus-wordpro + + + lzh + application/x-lzh-compressed + + + m13 + application/x-msmediaview + + + m14 + application/x-msmediaview + + + m1v + video/mpeg + + + m21 + application/mp21 + + + m2a + audio/mpeg + + + m2v + video/mpeg + + + m3a + audio/mpeg + + + m3u + audio/x-mpegurl + + + m3u8 + application/vnd.apple.mpegurl + + + m4a + audio/mp4 + + + m4b + audio/mp4 + + + m4r + audio/mp4 + + + m4u + video/vnd.mpegurl + + + m4v + video/mp4 + + + ma + application/mathematica + + + mac + image/x-macpaint + + + mads + application/mads+xml + + + mag + application/vnd.ecowin.chart + + + maker + application/vnd.framemaker + + + man + text/troff + + + mar + application/octet-stream + + + mathml + application/mathml+xml + + + mb + application/mathematica + + + mbk + application/vnd.mobius.mbk + + + mbox + application/mbox + + + mc1 + application/vnd.medcalcdata + + + mcd + application/vnd.mcd + + + mcurl + text/vnd.curl.mcurl + + + mdb + application/x-msaccess + + + mdi + image/vnd.ms-modi + + + me + text/troff + + + mesh + model/mesh + + + meta4 + application/metalink4+xml + + + metalink + application/metalink+xml + + + mets + application/mets+xml + + + mfm + application/vnd.mfmp + + + mft + application/rpki-manifest + + + mgp + application/vnd.osgeo.mapguide.package + + + mgz + application/vnd.proteus.magazine + + + mid + audio/midi + + + midi + audio/midi + + + mie + application/x-mie + + + mif + application/x-mif + + + mime + message/rfc822 + + + mj2 + video/mj2 + + + mjp2 + video/mj2 + + + mk3d + video/x-matroska + + + mka + audio/x-matroska + + + mks + video/x-matroska + + + mkv + video/x-matroska + + + mlp + application/vnd.dolby.mlp + + + mmd + application/vnd.chipnuts.karaoke-mmd + + + mmf + application/vnd.smaf + + + mmr + image/vnd.fujixerox.edmics-mmr + + + mng + video/x-mng + + + mny + application/x-msmoney + + + mobi + application/x-mobipocket-ebook + + + mods + application/mods+xml + + + mov + video/quicktime + + + movie + video/x-sgi-movie + + + mp1 + audio/mpeg + + + mp2 + audio/mpeg + + + mp21 + application/mp21 + + + mp2a + audio/mpeg + + + mp3 + audio/mpeg + + + mp4 + video/mp4 + + + mp4a + audio/mp4 + + + mp4s + application/mp4 + + + mp4v + video/mp4 + + + mpa + audio/mpeg + + + mpc + application/vnd.mophun.certificate + + + mpe + video/mpeg + + + mpeg + video/mpeg + + + mpega + audio/x-mpeg + + + mpg + video/mpeg + + + mpg4 + video/mp4 + + + mpga + audio/mpeg + + + mpkg + application/vnd.apple.installer+xml + + + mpm + application/vnd.blueice.multipass + + + mpn + application/vnd.mophun.application + + + mpp + application/vnd.ms-project + + + mpt + application/vnd.ms-project + + + mpv2 + video/mpeg2 + + + mpy + application/vnd.ibm.minipay + + + mqy + application/vnd.mobius.mqy + + + mrc + application/marc + + + mrcx + application/marcxml+xml + + + ms + text/troff + + + mscml + application/mediaservercontrol+xml + + + mseed + application/vnd.fdsn.mseed + + + mseq + application/vnd.mseq + + + msf + application/vnd.epson.msf + + + msh + model/mesh + + + msi + application/x-msdownload + + + msl + application/vnd.mobius.msl + + + msty + application/vnd.muvee.style + + + mts + model/vnd.mts + + + mus + application/vnd.musician + + + musicxml + application/vnd.recordare.musicxml+xml + + + mvb + application/x-msmediaview + + + mwf + application/vnd.mfer + + + mxf + application/mxf + + + mxl + application/vnd.recordare.musicxml + + + mxml + application/xv+xml + + + mxs + application/vnd.triscape.mxs + + + mxu + video/vnd.mpegurl + + + n-gage + application/vnd.nokia.n-gage.symbian.install + + + n3 + text/n3 + + + nb + application/mathematica + + + nbp + application/vnd.wolfram.player + + + nc + application/x-netcdf + + + ncx + application/x-dtbncx+xml + + + nfo + text/x-nfo + + + ngdat + application/vnd.nokia.n-gage.data + + + nitf + application/vnd.nitf + + + nlu + application/vnd.neurolanguage.nlu + + + nml + application/vnd.enliven + + + nnd + application/vnd.noblenet-directory + + + nns + application/vnd.noblenet-sealer + + + nnw + application/vnd.noblenet-web + + + npx + image/vnd.net-fpx + + + nsc + application/x-conference + + + nsf + application/vnd.lotus-notes + + + ntf + application/vnd.nitf + + + nzb + application/x-nzb + + + oa2 + application/vnd.fujitsu.oasys2 + + + oa3 + application/vnd.fujitsu.oasys3 + + + oas + application/vnd.fujitsu.oasys + + + obd + application/x-msbinder + + + obj + application/x-tgif + + + oda + application/oda + + + + odb + application/vnd.oasis.opendocument.database + + + + odc + application/vnd.oasis.opendocument.chart + + + + odf + application/vnd.oasis.opendocument.formula + + + odft + application/vnd.oasis.opendocument.formula-template + + + + odg + application/vnd.oasis.opendocument.graphics + + + + odi + application/vnd.oasis.opendocument.image + + + + odm + application/vnd.oasis.opendocument.text-master + + + + odp + application/vnd.oasis.opendocument.presentation + + + + ods + application/vnd.oasis.opendocument.spreadsheet + + + + odt + application/vnd.oasis.opendocument.text + + + oga + audio/ogg + + + ogg + audio/ogg + + + ogv + video/ogg + + + + ogx + application/ogg + + + omdoc + application/omdoc+xml + + + onepkg + application/onenote + + + onetmp + application/onenote + + + onetoc + application/onenote + + + onetoc2 + application/onenote + + + opf + application/oebps-package+xml + + + opml + text/x-opml + + + oprc + application/vnd.palm + + + org + application/vnd.lotus-organizer + + + osf + application/vnd.yamaha.openscoreformat + + + osfpvg + application/vnd.yamaha.openscoreformat.osfpvg+xml + + + otc + application/vnd.oasis.opendocument.chart-template + + + otf + font/otf + + + + otg + application/vnd.oasis.opendocument.graphics-template + + + + oth + application/vnd.oasis.opendocument.text-web + + + oti + application/vnd.oasis.opendocument.image-template + + + + otp + application/vnd.oasis.opendocument.presentation-template + + + + ots + application/vnd.oasis.opendocument.spreadsheet-template + + + + ott + application/vnd.oasis.opendocument.text-template + + + oxps + application/oxps + + + oxt + application/vnd.openofficeorg.extension + + + p + text/x-pascal + + + p10 + application/pkcs10 + + + p12 + application/x-pkcs12 + + + p7b + application/x-pkcs7-certificates + + + p7c + application/pkcs7-mime + + + p7m + application/pkcs7-mime + + + p7r + application/x-pkcs7-certreqresp + + + p7s + application/pkcs7-signature + + + p8 + application/pkcs8 + + + pas + text/x-pascal + + + paw + application/vnd.pawaafile + + + pbd + application/vnd.powerbuilder6 + + + pbm + image/x-portable-bitmap + + + pcap + application/vnd.tcpdump.pcap + + + pcf + application/x-font-pcf + + + pcl + application/vnd.hp-pcl + + + pclxl + application/vnd.hp-pclxl + + + pct + image/pict + + + pcurl + application/vnd.curl.pcurl + + + pcx + image/x-pcx + + + pdb + application/vnd.palm + + + pdf + application/pdf + + + pfa + application/x-font-type1 + + + pfb + application/x-font-type1 + + + pfm + application/x-font-type1 + + + pfr + application/font-tdpfr + + + pfx + application/x-pkcs12 + + + pgm + image/x-portable-graymap + + + pgn + application/x-chess-pgn + + + pgp + application/pgp-encrypted + + + pic + image/pict + + + pict + image/pict + + + pkg + application/octet-stream + + + pki + application/pkixcmp + + + pkipath + application/pkix-pkipath + + + plb + application/vnd.3gpp.pic-bw-large + + + plc + application/vnd.mobius.plc + + + plf + application/vnd.pocketlearn + + + pls + audio/x-scpls + + + pml + application/vnd.ctc-posml + + + png + image/png + + + pnm + image/x-portable-anymap + + + pnt + image/x-macpaint + + + portpkg + application/vnd.macports.portpkg + + + pot + application/vnd.ms-powerpoint + + + potm + application/vnd.ms-powerpoint.template.macroenabled.12 + + + potx + application/vnd.openxmlformats-officedocument.presentationml.template + + + ppam + application/vnd.ms-powerpoint.addin.macroenabled.12 + + + ppd + application/vnd.cups-ppd + + + ppm + image/x-portable-pixmap + + + pps + application/vnd.ms-powerpoint + + + ppsm + application/vnd.ms-powerpoint.slideshow.macroenabled.12 + + + ppsx + application/vnd.openxmlformats-officedocument.presentationml.slideshow + + + ppt + application/vnd.ms-powerpoint + + + pptm + application/vnd.ms-powerpoint.presentation.macroenabled.12 + + + pptx + application/vnd.openxmlformats-officedocument.presentationml.presentation + + + pqa + application/vnd.palm + + + prc + application/x-mobipocket-ebook + + + pre + application/vnd.lotus-freelance + + + prf + application/pics-rules + + + ps + application/postscript + + + psb + application/vnd.3gpp.pic-bw-small + + + psd + image/vnd.adobe.photoshop + + + psf + application/x-font-linux-psf + + + pskcxml + application/pskc+xml + + + ptid + application/vnd.pvi.ptid1 + + + pub + application/x-mspublisher + + + pvb + application/vnd.3gpp.pic-bw-var + + + pwn + application/vnd.3m.post-it-notes + + + pya + audio/vnd.ms-playready.media.pya + + + pyv + video/vnd.ms-playready.media.pyv + + + qam + application/vnd.epson.quickanime + + + qbo + application/vnd.intu.qbo + + + qfx + application/vnd.intu.qfx + + + qps + application/vnd.publishare-delta-tree + + + qt + video/quicktime + + + qti + image/x-quicktime + + + qtif + image/x-quicktime + + + qwd + application/vnd.quark.quarkxpress + + + qwt + application/vnd.quark.quarkxpress + + + qxb + application/vnd.quark.quarkxpress + + + qxd + application/vnd.quark.quarkxpress + + + qxl + application/vnd.quark.quarkxpress + + + qxt + application/vnd.quark.quarkxpress + + + ra + audio/x-pn-realaudio + + + ram + audio/x-pn-realaudio + + + rar + application/x-rar-compressed + + + ras + image/x-cmu-raster + + + rcprofile + application/vnd.ipunplugged.rcprofile + + + rdf + application/rdf+xml + + + rdz + application/vnd.data-vision.rdz + + + rep + application/vnd.businessobjects + + + res + application/x-dtbresource+xml + + + rgb + image/x-rgb + + + rif + application/reginfo+xml + + + rip + audio/vnd.rip + + + ris + application/x-research-info-systems + + + rl + application/resource-lists+xml + + + rlc + image/vnd.fujixerox.edmics-rlc + + + rld + application/resource-lists-diff+xml + + + rm + application/vnd.rn-realmedia + + + rmi + audio/midi + + + rmp + audio/x-pn-realaudio-plugin + + + rms + application/vnd.jcp.javame.midlet-rms + + + rmvb + application/vnd.rn-realmedia-vbr + + + rnc + application/relax-ng-compact-syntax + + + roa + application/rpki-roa + + + roff + text/troff + + + rp9 + application/vnd.cloanto.rp9 + + + rpss + application/vnd.nokia.radio-presets + + + rpst + application/vnd.nokia.radio-preset + + + rq + application/sparql-query + + + rs + application/rls-services+xml + + + rsd + application/rsd+xml + + + rss + application/rss+xml + + + rtf + application/rtf + + + rtx + text/richtext + + + s + text/x-asm + + + s3m + audio/s3m + + + saf + application/vnd.yamaha.smaf-audio + + + sbml + application/sbml+xml + + + sc + application/vnd.ibm.secure-container + + + scd + application/x-msschedule + + + scm + application/vnd.lotus-screencam + + + scq + application/scvp-cv-request + + + scs + application/scvp-cv-response + + + scurl + text/vnd.curl.scurl + + + sda + application/vnd.stardivision.draw + + + sdc + application/vnd.stardivision.calc + + + sdd + application/vnd.stardivision.impress + + + sdkd + application/vnd.solent.sdkm+xml + + + sdkm + application/vnd.solent.sdkm+xml + + + sdp + application/sdp + + + sdw + application/vnd.stardivision.writer + + + see + application/vnd.seemail + + + seed + application/vnd.fdsn.seed + + + sema + application/vnd.sema + + + semd + application/vnd.semd + + + semf + application/vnd.semf + + + ser + application/java-serialized-object + + + setpay + application/set-payment-initiation + + + setreg + application/set-registration-initiation + + + sfd-hdstx + application/vnd.hydrostatix.sof-data + + + sfs + application/vnd.spotfire.sfs + + + sfv + text/x-sfv + + + sgi + image/sgi + + + sgl + application/vnd.stardivision.writer-global + + + sgm + text/sgml + + + sgml + text/sgml + + + sh + application/x-sh + + + shar + application/x-shar + + + shf + application/shf+xml + + + + sid + image/x-mrsid-image + + + sig + application/pgp-signature + + + sil + audio/silk + + + silo + model/mesh + + + sis + application/vnd.symbian.install + + + sisx + application/vnd.symbian.install + + + sit + application/x-stuffit + + + sitx + application/x-stuffitx + + + skd + application/vnd.koan + + + skm + application/vnd.koan + + + skp + application/vnd.koan + + + skt + application/vnd.koan + + + sldm + application/vnd.ms-powerpoint.slide.macroenabled.12 + + + sldx + application/vnd.openxmlformats-officedocument.presentationml.slide + + + slt + application/vnd.epson.salt + + + sm + application/vnd.stepmania.stepchart + + + smf + application/vnd.stardivision.math + + + smi + application/smil+xml + + + smil + application/smil+xml + + + smv + video/x-smv + + + smzip + application/vnd.stepmania.package + + + snd + audio/basic + + + snf + application/x-font-snf + + + so + application/octet-stream + + + spc + application/x-pkcs7-certificates + + + spf + application/vnd.yamaha.smaf-phrase + + + spl + application/x-futuresplash + + + spot + text/vnd.in3d.spot + + + spp + application/scvp-vp-response + + + spq + application/scvp-vp-request + + + spx + audio/ogg + + + sql + application/x-sql + + + src + application/x-wais-source + + + srt + application/x-subrip + + + sru + application/sru+xml + + + srx + application/sparql-results+xml + + + ssdl + application/ssdl+xml + + + sse + application/vnd.kodak-descriptor + + + ssf + application/vnd.epson.ssf + + + ssml + application/ssml+xml + + + st + application/vnd.sailingtracker.track + + + stc + application/vnd.sun.xml.calc.template + + + std + application/vnd.sun.xml.draw.template + + + stf + application/vnd.wt.stf + + + sti + application/vnd.sun.xml.impress.template + + + stk + application/hyperstudio + + + stl + application/vnd.ms-pki.stl + + + str + application/vnd.pg.format + + + stw + application/vnd.sun.xml.writer.template + + + sub + text/vnd.dvb.subtitle + + + sus + application/vnd.sus-calendar + + + susp + application/vnd.sus-calendar + + + sv4cpio + application/x-sv4cpio + + + sv4crc + application/x-sv4crc + + + svc + application/vnd.dvb.service + + + svd + application/vnd.svd + + + svg + image/svg+xml + + + svgz + image/svg+xml + + + swa + application/x-director + + + swf + application/x-shockwave-flash + + + swi + application/vnd.aristanetworks.swi + + + sxc + application/vnd.sun.xml.calc + + + sxd + application/vnd.sun.xml.draw + + + sxg + application/vnd.sun.xml.writer.global + + + sxi + application/vnd.sun.xml.impress + + + sxm + application/vnd.sun.xml.math + + + sxw + application/vnd.sun.xml.writer + + + t + text/troff + + + t3 + application/x-t3vm-image + + + taglet + application/vnd.mynfc + + + tao + application/vnd.tao.intent-module-archive + + + tar + application/x-tar + + + tcap + application/vnd.3gpp2.tcap + + + tcl + application/x-tcl + + + teacher + application/vnd.smart.teacher + + + tei + application/tei+xml + + + teicorpus + application/tei+xml + + + tex + application/x-tex + + + texi + application/x-texinfo + + + texinfo + application/x-texinfo + + + text + text/plain + + + tfi + application/thraud+xml + + + tfm + application/x-tex-tfm + + + tga + image/x-tga + + + thmx + application/vnd.ms-officetheme + + + tif + image/tiff + + + tiff + image/tiff + + + tmo + application/vnd.tmobile-livetv + + + torrent + application/x-bittorrent + + + tpl + application/vnd.groove-tool-template + + + tpt + application/vnd.trid.tpt + + + tr + text/troff + + + tra + application/vnd.trueapp + + + trm + application/x-msterminal + + + tsd + application/timestamped-data + + + tsv + text/tab-separated-values + + + ttc + font/collection + + + ttf + font/ttf + + + ttl + text/turtle + + + twd + application/vnd.simtech-mindmapper + + + twds + application/vnd.simtech-mindmapper + + + txd + application/vnd.genomatix.tuxedo + + + txf + application/vnd.mobius.txf + + + txt + text/plain + + + u32 + application/x-authorware-bin + + + udeb + application/x-debian-package + + + ufd + application/vnd.ufdl + + + ufdl + application/vnd.ufdl + + + ulw + audio/basic + + + ulx + application/x-glulx + + + umj + application/vnd.umajin + + + unityweb + application/vnd.unity + + + uoml + application/vnd.uoml+xml + + + uri + text/uri-list + + + uris + text/uri-list + + + urls + text/uri-list + + + ustar + application/x-ustar + + + utz + application/vnd.uiq.theme + + + uu + text/x-uuencode + + + uva + audio/vnd.dece.audio + + + uvd + application/vnd.dece.data + + + uvf + application/vnd.dece.data + + + uvg + image/vnd.dece.graphic + + + uvh + video/vnd.dece.hd + + + uvi + image/vnd.dece.graphic + + + uvm + video/vnd.dece.mobile + + + uvp + video/vnd.dece.pd + + + uvs + video/vnd.dece.sd + + + uvt + application/vnd.dece.ttml+xml + + + uvu + video/vnd.uvvu.mp4 + + + uvv + video/vnd.dece.video + + + uvva + audio/vnd.dece.audio + + + uvvd + application/vnd.dece.data + + + uvvf + application/vnd.dece.data + + + uvvg + image/vnd.dece.graphic + + + uvvh + video/vnd.dece.hd + + + uvvi + image/vnd.dece.graphic + + + uvvm + video/vnd.dece.mobile + + + uvvp + video/vnd.dece.pd + + + uvvs + video/vnd.dece.sd + + + uvvt + application/vnd.dece.ttml+xml + + + uvvu + video/vnd.uvvu.mp4 + + + uvvv + video/vnd.dece.video + + + uvvx + application/vnd.dece.unspecified + + + uvvz + application/vnd.dece.zip + + + uvx + application/vnd.dece.unspecified + + + uvz + application/vnd.dece.zip + + + vcard + text/vcard + + + vcd + application/x-cdlink + + + vcf + text/x-vcard + + + vcg + application/vnd.groove-vcard + + + vcs + text/x-vcalendar + + + vcx + application/vnd.vcx + + + vis + application/vnd.visionary + + + viv + video/vnd.vivo + + + vob + video/x-ms-vob + + + vor + application/vnd.stardivision.writer + + + vox + application/x-authorware-bin + + + vrml + model/vrml + + + vsd + application/vnd.visio + + + vsf + application/vnd.vsf + + + vss + application/vnd.visio + + + vst + application/vnd.visio + + + vsw + application/vnd.visio + + + vtu + model/vnd.vtu + + + vxml + application/voicexml+xml + + + w3d + application/x-director + + + wad + application/x-doom + + + wasm + application/wasm + + + wav + audio/x-wav + + + wax + audio/x-ms-wax + + + + wbmp + image/vnd.wap.wbmp + + + wbs + application/vnd.criticaltools.wbs+xml + + + wbxml + application/vnd.wap.wbxml + + + wcm + application/vnd.ms-works + + + wdb + application/vnd.ms-works + + + wdp + image/vnd.ms-photo + + + weba + audio/webm + + + webm + video/webm + + + webp + image/webp + + + wg + application/vnd.pmi.widget + + + wgt + application/widget + + + wks + application/vnd.ms-works + + + wm + video/x-ms-wm + + + wma + audio/x-ms-wma + + + wmd + application/x-ms-wmd + + + wmf + application/x-msmetafile + + + + wml + text/vnd.wap.wml + + + + wmlc + application/vnd.wap.wmlc + + + + wmls + text/vnd.wap.wmlscript + + + + wmlsc + application/vnd.wap.wmlscriptc + + + wmv + video/x-ms-wmv + + + wmx + video/x-ms-wmx + + + wmz + application/x-msmetafile + + + woff + font/woff + + + woff2 + font/woff2 + + + wpd + application/vnd.wordperfect + + + wpl + application/vnd.ms-wpl + + + wps + application/vnd.ms-works + + + wqd + application/vnd.wqd + + + wri + application/x-mswrite + + + wrl + model/vrml + + + wsdl + application/wsdl+xml + + + wspolicy + application/wspolicy+xml + + + wtb + application/vnd.webturbo + + + wvx + video/x-ms-wvx + + + x32 + application/x-authorware-bin + + + x3d + model/x3d+xml + + + x3db + model/x3d+binary + + + x3dbz + model/x3d+binary + + + x3dv + model/x3d+vrml + + + x3dvz + model/x3d+vrml + + + x3dz + model/x3d+xml + + + xaml + application/xaml+xml + + + xap + application/x-silverlight-app + + + xar + application/vnd.xara + + + xbap + application/x-ms-xbap + + + xbd + application/vnd.fujixerox.docuworks.binder + + + xbm + image/x-xbitmap + + + xdf + application/xcap-diff+xml + + + xdm + application/vnd.syncml.dm+xml + + + xdp + application/vnd.adobe.xdp+xml + + + xdssc + application/dssc+xml + + + xdw + application/vnd.fujixerox.docuworks + + + xenc + application/xenc+xml + + + xer + application/patch-ops-error+xml + + + xfdf + application/vnd.adobe.xfdf + + + xfdl + application/vnd.xfdl + + + xht + application/xhtml+xml + + + xhtml + application/xhtml+xml + + + xhvml + application/xv+xml + + + xif + image/vnd.xiff + + + xla + application/vnd.ms-excel + + + xlam + application/vnd.ms-excel.addin.macroenabled.12 + + + xlc + application/vnd.ms-excel + + + xlf + application/x-xliff+xml + + + xlm + application/vnd.ms-excel + + + xls + application/vnd.ms-excel + + + xlsb + application/vnd.ms-excel.sheet.binary.macroenabled.12 + + + xlsm + application/vnd.ms-excel.sheet.macroenabled.12 + + + xlsx + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + + + xlt + application/vnd.ms-excel + + + xltm + application/vnd.ms-excel.template.macroenabled.12 + + + xltx + application/vnd.openxmlformats-officedocument.spreadsheetml.template + + + xlw + application/vnd.ms-excel + + + xm + audio/xm + + + xml + application/xml + + + xo + application/vnd.olpc-sugar + + + xop + application/xop+xml + + + xpi + application/x-xpinstall + + + xpl + application/xproc+xml + + + xpm + image/x-xpixmap + + + xpr + application/vnd.is-xpr + + + xps + application/vnd.ms-xpsdocument + + + xpw + application/vnd.intercon.formnet + + + xpx + application/vnd.intercon.formnet + + + xsl + application/xml + + + xslt + application/xslt+xml + + + xsm + application/vnd.syncml+xml + + + xspf + application/xspf+xml + + + xul + application/vnd.mozilla.xul+xml + + + xvm + application/xv+xml + + + xvml + application/xv+xml + + + xwd + image/x-xwindowdump + + + xyz + chemical/x-xyz + + + xz + application/x-xz + + + yang + application/yang + + + yin + application/yin+xml + + + z + application/x-compress + + + z1 + application/x-zmachine + + + z2 + application/x-zmachine + + + z3 + application/x-zmachine + + + z4 + application/x-zmachine + + + z5 + application/x-zmachine + + + z6 + application/x-zmachine + + + z7 + application/x-zmachine + + + z8 + application/x-zmachine + + + zaz + application/vnd.zzazz.deck+xml + + + zip + application/zip + + + zir + application/vnd.zul + + + zirz + application/vnd.zul + + + zmm + application/vnd.handheld-entertainment+xml + + + + + + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + diff --git a/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml b/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml new file mode 100644 index 0000000000..afe0e87bcc --- /dev/null +++ b/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml @@ -0,0 +1,50 @@ + + + Ping + + + Ping Login Auth + + Restricted Access + /private/* + + + admin + + + NONE + + + + + admin + + + + FORM + + /logging.html + /logging_error.html + + + + + ExpiresFilter + org.apache.catalina.filters.ExpiresFilter + + ExpiresByType text/html + access plus 0 seconds + + + + + ExpiresFilter + /private/* + REQUEST + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/ping/index.html b/apache-tomcat/sso/webapps/ping/index.html new file mode 100644 index 0000000000..b9c1a889e9 --- /dev/null +++ b/apache-tomcat/sso/webapps/ping/index.html @@ -0,0 +1,9 @@ + + + + Ping + + + Start pinging + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/ping/logging.html b/apache-tomcat/sso/webapps/ping/logging.html new file mode 100644 index 0000000000..53699e61ff --- /dev/null +++ b/apache-tomcat/sso/webapps/ping/logging.html @@ -0,0 +1,26 @@ + + + + Ping - Login + + +
+ + + + + + + + + +
User name:
Password:
+

+ +   + +
+ + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/ping/logging_error.html b/apache-tomcat/sso/webapps/ping/logging_error.html new file mode 100644 index 0000000000..16270326e2 --- /dev/null +++ b/apache-tomcat/sso/webapps/ping/logging_error.html @@ -0,0 +1,10 @@ + + + + Ping + + + Error logging in! + Try again + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/ping/private/index.html b/apache-tomcat/sso/webapps/ping/private/index.html new file mode 100644 index 0000000000..89eb346be4 --- /dev/null +++ b/apache-tomcat/sso/webapps/ping/private/index.html @@ -0,0 +1,9 @@ + + + + Ping - Pinging + + + Pong! + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml b/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml new file mode 100644 index 0000000000..69728f77dc --- /dev/null +++ b/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml @@ -0,0 +1,51 @@ + + + Pong + + index.html + + + + + Pong Login Auth + + Restricted Access + /private/* + + + admin + + + NONE + + + + + admin + + + + + FORM + + /logging.html + /logging_error.html + + + + + ExpiresFilter + org.apache.catalina.filters.ExpiresFilter + + ExpiresByType text/html + access plus 0 seconds + + + + + ExpiresFilter + /private/* + REQUEST + + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/pong/index.html b/apache-tomcat/sso/webapps/pong/index.html new file mode 100644 index 0000000000..9c45629b85 --- /dev/null +++ b/apache-tomcat/sso/webapps/pong/index.html @@ -0,0 +1,9 @@ + + + + Pong + + + Start ponging + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/pong/logging.html b/apache-tomcat/sso/webapps/pong/logging.html new file mode 100644 index 0000000000..ba2ad05c1f --- /dev/null +++ b/apache-tomcat/sso/webapps/pong/logging.html @@ -0,0 +1,26 @@ + + + + Pong - Login + + +
+ + + + + + + + + +
User name:
Password:
+

+ +   + +
+ + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/pong/logging_error.html b/apache-tomcat/sso/webapps/pong/logging_error.html new file mode 100644 index 0000000000..b5619a5094 --- /dev/null +++ b/apache-tomcat/sso/webapps/pong/logging_error.html @@ -0,0 +1,10 @@ + + + + Pong + + + Error logging in! + Try again + + \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/pong/private/index.html b/apache-tomcat/sso/webapps/pong/private/index.html new file mode 100644 index 0000000000..d2f096f6aa --- /dev/null +++ b/apache-tomcat/sso/webapps/pong/private/index.html @@ -0,0 +1,9 @@ + + + + Pong - Ponging + + + Ping! + + \ No newline at end of file From aa7680545728145abe648091613c46d7a5ccb7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor?= Date: Thu, 3 Mar 2022 01:24:41 +0100 Subject: [PATCH 02/43] BAEL-4626 Adjusted traces levels. Adjusted web.xml from webapps. Allows to see clearly the security constraints being applied. Pong: Changed authentication method to DIGEST. This is to check that SSO works with different authentication mechanisms. --- apache-tomcat/sso/res/conf/logging.properties | 6 ++--- .../sso/webapps/ping/WEB-INF/web.xml | 6 ++--- .../sso/webapps/pong/WEB-INF/web.xml | 12 +++------ apache-tomcat/sso/webapps/pong/logging.html | 26 ------------------- .../sso/webapps/pong/logging_error.html | 10 ------- 5 files changed, 10 insertions(+), 50 deletions(-) delete mode 100644 apache-tomcat/sso/webapps/pong/logging.html delete mode 100644 apache-tomcat/sso/webapps/pong/logging_error.html diff --git a/apache-tomcat/sso/res/conf/logging.properties b/apache-tomcat/sso/res/conf/logging.properties index 9413465201..16e37906c9 100644 --- a/apache-tomcat/sso/res/conf/logging.properties +++ b/apache-tomcat/sso/res/conf/logging.properties @@ -50,15 +50,15 @@ java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter java.util.logging.ConsoleHandler.encoding = UTF-8 -org.apache.catalina.authenticator.level = ALL +org.apache.catalina.authenticator.level = FINE org.apache.catalina.authenticator.formatter = org.apache.juli.OneLineFormatter org.apache.catalina.authenticator.encoding = UTF-8 -org.apache.catalina.Realm.level = ALL +org.apache.catalina.Realm.level = FINE org.apache.catalina.Realm.formatter = org.apache.juli.OneLineFormatter org.apache.catalina.Realm.encoding = UTF-8 -org.apache.catalina.realm.level = ALL +org.apache.catalina.realm.level = FINE org.apache.catalina.realm.formatter = org.apache.juli.OneLineFormatter org.apache.catalina.realm.encoding = UTF-8 diff --git a/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml b/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml index afe0e87bcc..7e8a76e5e9 100644 --- a/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml +++ b/apache-tomcat/sso/webapps/ping/WEB-INF/web.xml @@ -10,7 +10,7 @@ Ping Login Auth - Restricted Access + PingRestrictedAccess /private/* @@ -34,7 +34,7 @@ - ExpiresFilter + PingExpiresFilter org.apache.catalina.filters.ExpiresFilter ExpiresByType text/html @@ -43,7 +43,7 @@ - ExpiresFilter + PingExpiresFilter /private/* REQUEST diff --git a/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml b/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml index 69728f77dc..9db95f88c4 100644 --- a/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml +++ b/apache-tomcat/sso/webapps/pong/WEB-INF/web.xml @@ -9,7 +9,7 @@ Pong Login Auth - Restricted Access + PongRestrictedAccess /private/* @@ -26,15 +26,11 @@ - FORM - - /logging.html - /logging_error.html - + DIGEST - ExpiresFilter + PongExpiresFilter org.apache.catalina.filters.ExpiresFilter ExpiresByType text/html @@ -43,7 +39,7 @@ - ExpiresFilter + PongExpiresFilter /private/* REQUEST diff --git a/apache-tomcat/sso/webapps/pong/logging.html b/apache-tomcat/sso/webapps/pong/logging.html deleted file mode 100644 index ba2ad05c1f..0000000000 --- a/apache-tomcat/sso/webapps/pong/logging.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - Pong - Login - - -
- - - - - - - - - -
User name:
Password:
-

- -   - -
- - \ No newline at end of file diff --git a/apache-tomcat/sso/webapps/pong/logging_error.html b/apache-tomcat/sso/webapps/pong/logging_error.html deleted file mode 100644 index b5619a5094..0000000000 --- a/apache-tomcat/sso/webapps/pong/logging_error.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - Pong - - - Error logging in! - Try again - - \ No newline at end of file From 95aa9428b45607486cbf7115501f11d5c8ed51a9 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Thu, 3 Mar 2022 21:57:58 +0530 Subject: [PATCH 03/43] JAVA-10083 Create new module hibernate-queries from spring-hibernate-5 module --- .../hibernate-queries-2/.gitignore | 13 +++ .../hibernate-queries-2/README.md | 8 ++ .../hibernate-queries-2/pom.xml | 86 +++++++++++++++++++ .../hibernate/criteria/PersistenceConfig.java | 71 +++++++++++++++ .../hibernate/criteria/model/Item.java | 0 .../criteria/util/HibernateUtil.java | 0 .../criteria/view/ApplicationView.java | 2 +- .../src/main/resources/import-db.sql | 0 .../src/main/resources/logback.xml | 19 ++++ .../main/resources/persistence-h2.properties | 21 +++++ .../java/com/baeldung/SpringContextTest.java | 18 ++++ .../HibernateCriteriaIntegrationTest.java | 0 .../criteria/HibernateCriteriaTestRunner.java | 0 .../criteria/HibernateCriteriaTestSuite.java | 0 .../src/test/resources/.gitignore | 13 +++ .../hibernate/criteria/model/Item.hbm.xml | 0 .../src/test/resources/criteria.cfg.xml | 0 .../src/test/resources/import-db.sql | 0 .../spring-hibernate-5/README.md | 1 - 19 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 persistence-modules/hibernate-queries-2/.gitignore create mode 100644 persistence-modules/hibernate-queries-2/README.md create mode 100644 persistence-modules/hibernate-queries-2/pom.xml create mode 100644 persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/main/java/com/baeldung/hibernate/criteria/model/Item.java (100%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java (100%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java (99%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/main/resources/import-db.sql (100%) create mode 100644 persistence-modules/hibernate-queries-2/src/main/resources/logback.xml create mode 100644 persistence-modules/hibernate-queries-2/src/main/resources/persistence-h2.properties create mode 100644 persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/SpringContextTest.java rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java (100%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java (100%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java (100%) create mode 100644 persistence-modules/hibernate-queries-2/src/test/resources/.gitignore rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml (100%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/test/resources/criteria.cfg.xml (100%) rename persistence-modules/{spring-hibernate-5 => hibernate-queries-2}/src/test/resources/import-db.sql (100%) diff --git a/persistence-modules/hibernate-queries-2/.gitignore b/persistence-modules/hibernate-queries-2/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/hibernate-queries-2/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/hibernate-queries-2/README.md b/persistence-modules/hibernate-queries-2/README.md new file mode 100644 index 0000000000..276e08ef52 --- /dev/null +++ b/persistence-modules/hibernate-queries-2/README.md @@ -0,0 +1,8 @@ +## Hibernate 5 with Spring + +This module contains articles about JPA Criteria Queries. + +### Relevant articles + +- [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries) + diff --git a/persistence-modules/hibernate-queries-2/pom.xml b/persistence-modules/hibernate-queries-2/pom.xml new file mode 100644 index 0000000000..58b1b23b06 --- /dev/null +++ b/persistence-modules/hibernate-queries-2/pom.xml @@ -0,0 +1,86 @@ + + + 4.0.0 + hibernate-queries-2 + 0.1-SNAPSHOT + hibernate-queries-2 + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + + org.springframework + spring-context + ${org.springframework.version} + + + org.springframework.data + spring-data-jpa + ${org.springframework.data.version} + + + org.hibernate + hibernate-core + ${hibernate.version} + + + org.apache.tomcat + tomcat-dbcp + ${tomcat-dbcp.version} + + + + + com.google.guava + guava + ${guava.version} + + + + org.springframework + spring-test + ${org.springframework.version} + test + + + com.h2database + h2 + ${h2.version} + + + com.sun.xml.bind + jaxb-core + ${com.sun.xml.version} + + + javax.xml.bind + jaxb-api + ${javax.xml.bind.version} + + + com.sun.xml.bind + jaxb-impl + ${com.sun.xml.version} + + + + + + 5.0.2.RELEASE + 1.10.6.RELEASE + + 5.2.10.Final + 9.0.0.M26 + 2.3.4 + 2.3.0.1 + 2.3.1 + + + \ No newline at end of file diff --git a/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java b/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java new file mode 100644 index 0000000000..9239697952 --- /dev/null +++ b/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java @@ -0,0 +1,71 @@ +package com.baeldung.hibernate.criteria; + +import com.google.common.base.Preconditions; +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; +import java.util.Properties; + +@Configuration +@EnableTransactionManagement +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.hibernate.criteria" }) +public class PersistenceConfig { + + @Autowired + private Environment env; + + @Bean + public LocalSessionFactoryBean sessionFactory() { + final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); + sessionFactory.setDataSource(dataSource()); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.hibernate.criteria" }); + sessionFactory.setHibernateProperties(hibernateProperties()); + + return sessionFactory; + } + + @Bean + public DataSource dataSource() { + final BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); + dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); + dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); + + return dataSource; + } + + @Bean + public PlatformTransactionManager hibernateTransactionManager() { + final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); + transactionManager.setSessionFactory(sessionFactory().getObject()); + return transactionManager; + } + + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + private final Properties hibernateProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.show_sql", "false"); + + return hibernateProperties; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/model/Item.java b/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/model/Item.java similarity index 100% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/model/Item.java rename to persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/model/Item.java diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java b/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java similarity index 100% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java rename to persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java b/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java similarity index 99% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java rename to persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java index c7ca9f1ffd..248f64474a 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java +++ b/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java @@ -24,7 +24,7 @@ import com.baeldung.hibernate.criteria.model.Item; import com.baeldung.hibernate.criteria.util.HibernateUtil; public class ApplicationView { - + // default Constructor public ApplicationView() { diff --git a/persistence-modules/spring-hibernate-5/src/main/resources/import-db.sql b/persistence-modules/hibernate-queries-2/src/main/resources/import-db.sql similarity index 100% rename from persistence-modules/spring-hibernate-5/src/main/resources/import-db.sql rename to persistence-modules/hibernate-queries-2/src/main/resources/import-db.sql diff --git a/persistence-modules/hibernate-queries-2/src/main/resources/logback.xml b/persistence-modules/hibernate-queries-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/persistence-modules/hibernate-queries-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/hibernate-queries-2/src/main/resources/persistence-h2.properties b/persistence-modules/hibernate-queries-2/src/main/resources/persistence-h2.properties new file mode 100644 index 0000000000..e3544d354a --- /dev/null +++ b/persistence-modules/hibernate-queries-2/src/main/resources/persistence-h2.properties @@ -0,0 +1,21 @@ +# jdbc.X +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +jdbc.eventGeneratedId=sa +jdbc.user=sa +jdbc.pass= + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=create-drop +hibernate.cache.use_second_level_cache=true +hibernate.cache.use_query_cache=true +hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory + +# hibernate.search.X +hibernate.search.default.directory_provider = filesystem +hibernate.search.default.indexBase = /data/index/default + +# envers.X +envers.audit_table_suffix=_audit_log diff --git a/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/SpringContextTest.java new file mode 100644 index 0000000000..6503454abf --- /dev/null +++ b/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/SpringContextTest.java @@ -0,0 +1,18 @@ +package com.baeldung; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.hibernate.criteria.PersistenceConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) +public class SpringContextTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java b/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java rename to persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java b/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java rename to persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java b/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java rename to persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java diff --git a/persistence-modules/hibernate-queries-2/src/test/resources/.gitignore b/persistence-modules/hibernate-queries-2/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/hibernate-queries-2/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml b/persistence-modules/hibernate-queries-2/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml rename to persistence-modules/hibernate-queries-2/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/criteria.cfg.xml b/persistence-modules/hibernate-queries-2/src/test/resources/criteria.cfg.xml similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/resources/criteria.cfg.xml rename to persistence-modules/hibernate-queries-2/src/test/resources/criteria.cfg.xml diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/import-db.sql b/persistence-modules/hibernate-queries-2/src/test/resources/import-db.sql similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/resources/import-db.sql rename to persistence-modules/hibernate-queries-2/src/test/resources/import-db.sql diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md index 9770fe95af..124d71a21e 100644 --- a/persistence-modules/spring-hibernate-5/README.md +++ b/persistence-modules/spring-hibernate-5/README.md @@ -5,7 +5,6 @@ This module contains articles about Hibernate 5 with Spring. ### Relevant articles - [Programmatic Transactions in the Spring TestContext Framework](https://www.baeldung.com/spring-test-programmatic-transactions) -- [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries) - [Introduction to Hibernate Search](https://www.baeldung.com/hibernate-search) - [@DynamicUpdate with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-dynamicupdate) - [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache) From 0f920f8c79261ba84f8c57bb1775481e996db65f Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Sat, 12 Mar 2022 10:38:34 +0530 Subject: [PATCH 04/43] JAVA-10083 --- .../hibernate-queries-2/.gitignore | 13 --- .../hibernate-queries-2/README.md | 8 -- .../hibernate-queries-2/pom.xml | 86 ------------------- .../src/main/resources/logback.xml | 19 ---- .../src/test/resources/.gitignore | 13 --- .../hibernate-queries/README.md | 1 + persistence-modules/hibernate-queries/pom.xml | 59 ++++++++++++- .../hibernate/criteria/PersistenceConfig.java | 0 .../hibernate/criteria/model/Item.java | 0 .../criteria/util/HibernateUtil.java | 0 .../criteria/view/ApplicationView.java | 0 .../src/main/resources/import-db.sql | 0 .../src/main/resources/logback.xml | 6 ++ .../main/resources/persistence-h2.properties | 0 .../java/com/baeldung/SpringContextTest.java | 0 .../HibernateCriteriaIntegrationTest.java | 0 .../criteria/HibernateCriteriaTestRunner.java | 0 .../criteria/HibernateCriteriaTestSuite.java | 0 .../hibernate/criteria/model/Item.hbm.xml | 0 .../src/test/resources/criteria.cfg.xml | 0 .../src/test/resources/import-db.sql | 0 21 files changed, 65 insertions(+), 140 deletions(-) delete mode 100644 persistence-modules/hibernate-queries-2/.gitignore delete mode 100644 persistence-modules/hibernate-queries-2/README.md delete mode 100644 persistence-modules/hibernate-queries-2/pom.xml delete mode 100644 persistence-modules/hibernate-queries-2/src/main/resources/logback.xml delete mode 100644 persistence-modules/hibernate-queries-2/src/test/resources/.gitignore rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/main/java/com/baeldung/hibernate/criteria/model/Item.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/main/resources/import-db.sql (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/main/resources/persistence-h2.properties (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/java/com/baeldung/SpringContextTest.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/resources/criteria.cfg.xml (100%) rename persistence-modules/{hibernate-queries-2 => hibernate-queries}/src/test/resources/import-db.sql (100%) diff --git a/persistence-modules/hibernate-queries-2/.gitignore b/persistence-modules/hibernate-queries-2/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/persistence-modules/hibernate-queries-2/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/persistence-modules/hibernate-queries-2/README.md b/persistence-modules/hibernate-queries-2/README.md deleted file mode 100644 index 276e08ef52..0000000000 --- a/persistence-modules/hibernate-queries-2/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## Hibernate 5 with Spring - -This module contains articles about JPA Criteria Queries. - -### Relevant articles - -- [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries) - diff --git a/persistence-modules/hibernate-queries-2/pom.xml b/persistence-modules/hibernate-queries-2/pom.xml deleted file mode 100644 index 58b1b23b06..0000000000 --- a/persistence-modules/hibernate-queries-2/pom.xml +++ /dev/null @@ -1,86 +0,0 @@ - - - 4.0.0 - hibernate-queries-2 - 0.1-SNAPSHOT - hibernate-queries-2 - - - com.baeldung - persistence-modules - 1.0.0-SNAPSHOT - - - - - - org.springframework - spring-context - ${org.springframework.version} - - - org.springframework.data - spring-data-jpa - ${org.springframework.data.version} - - - org.hibernate - hibernate-core - ${hibernate.version} - - - org.apache.tomcat - tomcat-dbcp - ${tomcat-dbcp.version} - - - - - com.google.guava - guava - ${guava.version} - - - - org.springframework - spring-test - ${org.springframework.version} - test - - - com.h2database - h2 - ${h2.version} - - - com.sun.xml.bind - jaxb-core - ${com.sun.xml.version} - - - javax.xml.bind - jaxb-api - ${javax.xml.bind.version} - - - com.sun.xml.bind - jaxb-impl - ${com.sun.xml.version} - - - - - - 5.0.2.RELEASE - 1.10.6.RELEASE - - 5.2.10.Final - 9.0.0.M26 - 2.3.4 - 2.3.0.1 - 2.3.1 - - - \ No newline at end of file diff --git a/persistence-modules/hibernate-queries-2/src/main/resources/logback.xml b/persistence-modules/hibernate-queries-2/src/main/resources/logback.xml deleted file mode 100644 index ec0dc2469a..0000000000 --- a/persistence-modules/hibernate-queries-2/src/main/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - web - %date [%thread] %-5level %logger{36} - %message%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/persistence-modules/hibernate-queries-2/src/test/resources/.gitignore b/persistence-modules/hibernate-queries-2/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/persistence-modules/hibernate-queries-2/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/persistence-modules/hibernate-queries/README.md b/persistence-modules/hibernate-queries/README.md index 58ca74cd24..f1bc1cba0f 100644 --- a/persistence-modules/hibernate-queries/README.md +++ b/persistence-modules/hibernate-queries/README.md @@ -4,6 +4,7 @@ This module contains articles about use of Queries in Hibernate. ### Relevant articles: +- [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries) - [Criteria Queries Using JPA Metamodel](https://www.baeldung.com/hibernate-criteria-queries-metamodel) - [Get All Data from a Table with Hibernate](https://www.baeldung.com/hibernate-select-all) - [Hibernate Named Query](https://www.baeldung.com/hibernate-named-query) diff --git a/persistence-modules/hibernate-queries/pom.xml b/persistence-modules/hibernate-queries/pom.xml index 20c2da9ea9..f0307a6eaf 100644 --- a/persistence-modules/hibernate-queries/pom.xml +++ b/persistence-modules/hibernate-queries/pom.xml @@ -14,6 +14,38 @@ + + + org.springframework + spring-context + ${org.springframework.version} + + + org.springframework.data + spring-data-jpa + ${org.springframework.data.version} + + + org.apache.tomcat + tomcat-dbcp + ${tomcat-dbcp.version} + + + + + + com.google.guava + guava + ${guava.version} + + + + org.springframework + spring-test + ${org.springframework.version} + test + + org.hibernate hibernate-core @@ -49,9 +81,34 @@ jmh-generator-annprocess ${jmh-generator.version} - + + + com.sun.xml.bind + jaxb-core + ${com.sun.xml.version} + + + javax.xml.bind + jaxb-api + ${javax.xml.bind.version} + + + com.sun.xml.bind + jaxb-impl + ${com.sun.xml.version} + + + + 5.0.2.RELEASE + 1.10.6.RELEASE + + 5.2.10.Final + 9.0.0.M26 + 2.3.4 + 2.3.0.1 + 2.3.1 6.0.6 2.2.3 diff --git a/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java rename to persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/PersistenceConfig.java diff --git a/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/model/Item.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Item.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/model/Item.java rename to persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/model/Item.java diff --git a/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java rename to persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/util/HibernateUtil.java diff --git a/persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java b/persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java rename to persistence-modules/hibernate-queries/src/main/java/com/baeldung/hibernate/criteria/view/ApplicationView.java diff --git a/persistence-modules/hibernate-queries-2/src/main/resources/import-db.sql b/persistence-modules/hibernate-queries/src/main/resources/import-db.sql similarity index 100% rename from persistence-modules/hibernate-queries-2/src/main/resources/import-db.sql rename to persistence-modules/hibernate-queries/src/main/resources/import-db.sql diff --git a/persistence-modules/hibernate-queries/src/main/resources/logback.xml b/persistence-modules/hibernate-queries/src/main/resources/logback.xml index 7d900d8ea8..612296c6ce 100644 --- a/persistence-modules/hibernate-queries/src/main/resources/logback.xml +++ b/persistence-modules/hibernate-queries/src/main/resources/logback.xml @@ -7,6 +7,12 @@ + + + + + + diff --git a/persistence-modules/hibernate-queries-2/src/main/resources/persistence-h2.properties b/persistence-modules/hibernate-queries/src/main/resources/persistence-h2.properties similarity index 100% rename from persistence-modules/hibernate-queries-2/src/main/resources/persistence-h2.properties rename to persistence-modules/hibernate-queries/src/main/resources/persistence-h2.properties diff --git a/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/SpringContextTest.java rename to persistence-modules/hibernate-queries/src/test/java/com/baeldung/SpringContextTest.java diff --git a/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java rename to persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaIntegrationTest.java diff --git a/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java rename to persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestRunner.java diff --git a/persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java b/persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java rename to persistence-modules/hibernate-queries/src/test/java/com/baeldung/hibernate/criteria/HibernateCriteriaTestSuite.java diff --git a/persistence-modules/hibernate-queries-2/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml b/persistence-modules/hibernate-queries/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml rename to persistence-modules/hibernate-queries/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml diff --git a/persistence-modules/hibernate-queries-2/src/test/resources/criteria.cfg.xml b/persistence-modules/hibernate-queries/src/test/resources/criteria.cfg.xml similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/resources/criteria.cfg.xml rename to persistence-modules/hibernate-queries/src/test/resources/criteria.cfg.xml diff --git a/persistence-modules/hibernate-queries-2/src/test/resources/import-db.sql b/persistence-modules/hibernate-queries/src/test/resources/import-db.sql similarity index 100% rename from persistence-modules/hibernate-queries-2/src/test/resources/import-db.sql rename to persistence-modules/hibernate-queries/src/test/resources/import-db.sql From 64bc644d554db1863cbf97e83498fc96d00c9dcb Mon Sep 17 00:00:00 2001 From: sharifi Date: Sat, 12 Mar 2022 09:49:18 +0330 Subject: [PATCH 05/43] bael-4197: move source code to spring-boot-testing-2 module --- .../com/baeldung/xmlapplicationcontext/XmlBeanApplication.java | 0 .../java/com/baeldung/xmlapplicationcontext/domain/Employee.java | 0 .../baeldung/xmlapplicationcontext/service/EmployeeService.java | 0 .../xmlapplicationcontext/service/EmployeeServiceImpl.java | 0 .../xmlapplicationcontext/service/EmployeeServiceTestImpl.java | 0 .../src/main/resources/application-context.xml | 0 .../src/main/webapp/WEB-INF/application-context.xml | 0 .../EmployeeServiceAppContextIntegrationTest.java | 0 .../EmployeeServiceTestContextIntegrationTest.java | 0 .../src/test/resources/test-context.xml | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/java/com/baeldung/xmlapplicationcontext/XmlBeanApplication.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/java/com/baeldung/xmlapplicationcontext/domain/Employee.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeService.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceImpl.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceTestImpl.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/resources/application-context.xml (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/main/webapp/WEB-INF/application-context.xml (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceAppContextIntegrationTest.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceTestContextIntegrationTest.java (100%) rename spring-boot-modules/{spring-boot-testing => spring-boot-testing-2}/src/test/resources/test-context.xml (100%) diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/XmlBeanApplication.java b/spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/XmlBeanApplication.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/XmlBeanApplication.java rename to spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/XmlBeanApplication.java diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/domain/Employee.java b/spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/domain/Employee.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/domain/Employee.java rename to spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/domain/Employee.java diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeService.java b/spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeService.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeService.java rename to spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeService.java diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceImpl.java b/spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceImpl.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceImpl.java rename to spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceImpl.java diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceTestImpl.java b/spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceTestImpl.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceTestImpl.java rename to spring-boot-modules/spring-boot-testing-2/src/main/java/com/baeldung/xmlapplicationcontext/service/EmployeeServiceTestImpl.java diff --git a/spring-boot-modules/spring-boot-testing/src/main/resources/application-context.xml b/spring-boot-modules/spring-boot-testing-2/src/main/resources/application-context.xml similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/resources/application-context.xml rename to spring-boot-modules/spring-boot-testing-2/src/main/resources/application-context.xml diff --git a/spring-boot-modules/spring-boot-testing/src/main/webapp/WEB-INF/application-context.xml b/spring-boot-modules/spring-boot-testing-2/src/main/webapp/WEB-INF/application-context.xml similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/main/webapp/WEB-INF/application-context.xml rename to spring-boot-modules/spring-boot-testing-2/src/main/webapp/WEB-INF/application-context.xml diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceAppContextIntegrationTest.java b/spring-boot-modules/spring-boot-testing-2/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceAppContextIntegrationTest.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceAppContextIntegrationTest.java rename to spring-boot-modules/spring-boot-testing-2/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceAppContextIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceTestContextIntegrationTest.java b/spring-boot-modules/spring-boot-testing-2/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceTestContextIntegrationTest.java similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceTestContextIntegrationTest.java rename to spring-boot-modules/spring-boot-testing-2/src/test/java/com/baeldung/xmlapplicationcontext/EmployeeServiceTestContextIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-testing/src/test/resources/test-context.xml b/spring-boot-modules/spring-boot-testing-2/src/test/resources/test-context.xml similarity index 100% rename from spring-boot-modules/spring-boot-testing/src/test/resources/test-context.xml rename to spring-boot-modules/spring-boot-testing-2/src/test/resources/test-context.xml From df1cb49ab2b8cb20bcf3553a519a1534aef379d8 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Mon, 14 Mar 2022 22:58:20 +0530 Subject: [PATCH 06/43] JAVA-10358 changes done to include maven-multi-module changes --- .../maven-simple/parent-project/core/pom.xml | 9 ++++++++- .../maven-simple/parent-project/pom.xml | 10 ++++++++++ .../maven-simple/parent-project/service/pom.xml | 2 +- .../maven-simple/parent-project/webapp/pom.xml | 16 +++++++++++++++- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/maven-modules/maven-simple/parent-project/core/pom.xml b/maven-modules/maven-simple/parent-project/core/pom.xml index a403a59e84..287a331123 100644 --- a/maven-modules/maven-simple/parent-project/core/pom.xml +++ b/maven-modules/maven-simple/parent-project/core/pom.xml @@ -10,7 +10,14 @@ parent-project com.baeldung - 1.0.0-SNAPSHOT + 1.0-SNAPSHOT + + + org.springframework + spring-core + 4.3.30.RELEASE + + \ No newline at end of file diff --git a/maven-modules/maven-simple/parent-project/pom.xml b/maven-modules/maven-simple/parent-project/pom.xml index 7193b61ad7..3bae12e052 100644 --- a/maven-modules/maven-simple/parent-project/pom.xml +++ b/maven-modules/maven-simple/parent-project/pom.xml @@ -4,6 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 parent-project + 1.0-SNAPSHOT parent-project pom @@ -19,4 +20,13 @@ webapp + + + + org.springframework + spring-core + 5.3.16 + + + \ No newline at end of file diff --git a/maven-modules/maven-simple/parent-project/service/pom.xml b/maven-modules/maven-simple/parent-project/service/pom.xml index ee51b51d1b..04cb1151e1 100644 --- a/maven-modules/maven-simple/parent-project/service/pom.xml +++ b/maven-modules/maven-simple/parent-project/service/pom.xml @@ -10,7 +10,7 @@ parent-project com.baeldung - 1.0.0-SNAPSHOT + 1.0-SNAPSHOT \ No newline at end of file diff --git a/maven-modules/maven-simple/parent-project/webapp/pom.xml b/maven-modules/maven-simple/parent-project/webapp/pom.xml index d034d4e7d1..daaeca9394 100644 --- a/maven-modules/maven-simple/parent-project/webapp/pom.xml +++ b/maven-modules/maven-simple/parent-project/webapp/pom.xml @@ -7,10 +7,24 @@ webapp webapp + war + parent-project com.baeldung - 1.0.0-SNAPSHOT + 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-war-plugin + 3.3.2 + + false + + + + \ No newline at end of file From 405f0d03751bc4b9418e5710ceaaa0ce2ddcaa74 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 15 Mar 2022 17:15:19 +0530 Subject: [PATCH 07/43] JAVA-10358 Extracted versions to properties --- maven-modules/maven-simple/parent-project/core/pom.xml | 6 +++++- maven-modules/maven-simple/parent-project/pom.xml | 6 +++++- maven-modules/maven-simple/parent-project/webapp/pom.xml | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/maven-modules/maven-simple/parent-project/core/pom.xml b/maven-modules/maven-simple/parent-project/core/pom.xml index 287a331123..c21addfff8 100644 --- a/maven-modules/maven-simple/parent-project/core/pom.xml +++ b/maven-modules/maven-simple/parent-project/core/pom.xml @@ -17,7 +17,11 @@ org.springframework spring-core - 4.3.30.RELEASE + ${spring-core.version} + + + 4.3.30.RELEASE + \ No newline at end of file diff --git a/maven-modules/maven-simple/parent-project/pom.xml b/maven-modules/maven-simple/parent-project/pom.xml index 3bae12e052..bde903b1b5 100644 --- a/maven-modules/maven-simple/parent-project/pom.xml +++ b/maven-modules/maven-simple/parent-project/pom.xml @@ -25,8 +25,12 @@ org.springframework spring-core - 5.3.16 + ${spring-core.version} + + + 5.3.16 + \ No newline at end of file diff --git a/maven-modules/maven-simple/parent-project/webapp/pom.xml b/maven-modules/maven-simple/parent-project/webapp/pom.xml index daaeca9394..e3b6697758 100644 --- a/maven-modules/maven-simple/parent-project/webapp/pom.xml +++ b/maven-modules/maven-simple/parent-project/webapp/pom.xml @@ -20,11 +20,15 @@ org.apache.maven.plugins maven-war-plugin - 3.3.2 + ${maven-war-plugin.version} false + + + 3.3.2 + \ No newline at end of file From 3c5aaa6b09c0db78b17681c5a1df3bde8456eab1 Mon Sep 17 00:00:00 2001 From: Seshu Kumar T Date: Tue, 15 Mar 2022 19:27:51 +0530 Subject: [PATCH 08/43] Producer consumer problem (#11781) * Producer consumer problem * Simplified producer consumer added Co-authored-by: Seshu Thanneeru --- .../baeldung/producerconsumer/Consumer.java | 51 ++++++++++++++ .../baeldung/producerconsumer/DataQueue.java | 59 ++++++++++++++++ .../baeldung/producerconsumer/Message.java | 27 ++++++++ .../baeldung/producerconsumer/Producer.java | 53 ++++++++++++++ .../ProducerConsumerDemonstrator.java | 69 +++++++++++++++++++ .../SimpleProducerConsumerDemonstrator.java | 60 ++++++++++++++++ .../baeldung/producerconsumer/ThreadUtil.java | 24 +++++++ 7 files changed, 343 insertions(+) create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Message.java create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java create mode 100644 core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ThreadUtil.java diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java new file mode 100644 index 0000000000..5a059b74df --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Consumer.java @@ -0,0 +1,51 @@ +package com.baeldung.producerconsumer; + +public class Consumer implements Runnable { + private final DataQueue dataQueue; + private volatile boolean runFlag; + + public Consumer(DataQueue dataQueue) { + this.dataQueue = dataQueue; + runFlag = true; + } + + @Override + public void run() { + consume(); + } + + public void consume() { + while (runFlag) { + Message message; + if (dataQueue.isEmpty()) { + try { + dataQueue.waitOnEmpty(); + } catch (InterruptedException e) { + e.printStackTrace(); + break; + } + } + if (!runFlag) { + break; + } + message = dataQueue.remove(); + dataQueue.notifyAllForFull(); + useMessage(message); + } + System.out.println("Consumer Stopped"); + } + + private void useMessage(Message message) { + if (message != null) { + System.out.printf("[%s] Consuming Message. Id: %d, Data: %f\n", Thread.currentThread().getName(), message.getId(), message.getData()); + + //Sleeping on random time to make it realistic + ThreadUtil.sleep((long) (message.getData() * 100)); + } + } + + public void stop() { + runFlag = false; + dataQueue.notifyAllForEmpty(); + } +} diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java new file mode 100644 index 0000000000..6ab4fa2bc3 --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/DataQueue.java @@ -0,0 +1,59 @@ +package com.baeldung.producerconsumer; + +import java.util.LinkedList; +import java.util.Queue; + +public class DataQueue { + private final Queue queue = new LinkedList<>(); + private final int maxSize; + private final Object FULL_QUEUE = new Object(); + private final Object EMPTY_QUEUE = new Object(); + + DataQueue(int maxSize) { + this.maxSize = maxSize; + } + + public boolean isFull() { + return queue.size() == maxSize; + } + + public boolean isEmpty() { + return queue.isEmpty(); + } + + public void waitOnFull() throws InterruptedException { + synchronized (FULL_QUEUE) { + FULL_QUEUE.wait(); + } + } + + public void waitOnEmpty() throws InterruptedException { + synchronized (EMPTY_QUEUE) { + EMPTY_QUEUE.wait(); + } + } + + public void notifyAllForFull() { + synchronized (FULL_QUEUE) { + FULL_QUEUE.notifyAll(); + } + } + + public void notifyAllForEmpty() { + synchronized (EMPTY_QUEUE) { + EMPTY_QUEUE.notifyAll(); + } + } + + public void add(Message message) { + synchronized (queue) { + queue.add(message); + } + } + + public Message remove() { + synchronized (queue) { + return queue.poll(); + } + } +} diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Message.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Message.java new file mode 100644 index 0000000000..48f6e986df --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Message.java @@ -0,0 +1,27 @@ +package com.baeldung.producerconsumer; + +public class Message { + private int id; + private double data; + + public Message(int id, double data) { + this.id = id; + this.data = data; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public double getData() { + return data; + } + + public void setData(double data) { + this.data = data; + } +} diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java new file mode 100644 index 0000000000..80d693bd97 --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/Producer.java @@ -0,0 +1,53 @@ +package com.baeldung.producerconsumer; + +public class Producer implements Runnable { + private final DataQueue dataQueue; + private volatile boolean runFlag; + + private static int idSequence = 0; + + public Producer(DataQueue dataQueue) { + this.dataQueue = dataQueue; + runFlag = true; + } + + @Override + public void run() { + produce(); + } + + public void produce() { + while (runFlag) { + Message message = generateMessage(); + while (dataQueue.isFull()) { + try { + dataQueue.waitOnFull(); + } catch (InterruptedException e) { + e.printStackTrace(); + break; + } + } + if (!runFlag) { + break; + } + dataQueue.add(message); + dataQueue.notifyAllForEmpty(); + } + System.out.println("Producer Stopped"); + } + + private Message generateMessage() { + Message message = new Message(++idSequence, Math.random()); + System.out.printf("[%s] Generated Message. Id: %d, Data: %f\n", Thread.currentThread().getName(), message.getId(), message.getData()); + + //Sleeping on random time to make it realistic + ThreadUtil.sleep((long) (message.getData() * 100)); + + return message; + } + + public void stop() { + runFlag = false; + dataQueue.notifyAllForFull(); + } +} diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java new file mode 100644 index 0000000000..96d7b9f865 --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ProducerConsumerDemonstrator.java @@ -0,0 +1,69 @@ +package com.baeldung.producerconsumer; + +import java.util.ArrayList; +import java.util.List; + +import static com.baeldung.producerconsumer.ThreadUtil.*; + +public class ProducerConsumerDemonstrator { + private static final int MAX_QUEUE_CAPACITY = 5; + + public static void demoSingleProducerAndSingleConsumer() { + DataQueue dataQueue = new DataQueue(MAX_QUEUE_CAPACITY); + + Producer producer = new Producer(dataQueue); + Thread producerThread = new Thread(producer); + + Consumer consumer = new Consumer(dataQueue); + Thread consumerThread = new Thread(consumer); + + producerThread.start(); + consumerThread.start(); + + List threads = new ArrayList<>(); + threads.add(producerThread); + threads.add(consumerThread); + + // let threads run for two seconds + sleep(2000); + + // Stop threads + producer.stop(); + consumer.stop(); + + waitForAllThreadsToComplete(threads); + } + + public static void demoMultipleProducersAndMultipleConsumers() { + DataQueue dataQueue = new DataQueue(MAX_QUEUE_CAPACITY); + int producerCount = 3; + int consumerCount = 3; + List threads = new ArrayList<>(); + Producer producer = new Producer(dataQueue); + for(int i = 0; i < producerCount; i++) { + Thread producerThread = new Thread(producer); + producerThread.start(); + threads.add(producerThread); + } + Consumer consumer = new Consumer(dataQueue); + for(int i = 0; i < consumerCount; i++) { + Thread consumerThread = new Thread(consumer); + consumerThread.start(); + threads.add(consumerThread); + } + + // let threads run for two seconds + sleep(2000); + + // Stop threads + producer.stop(); + consumer.stop(); + + waitForAllThreadsToComplete(threads); + } + + public static void main(String[] args) { + demoSingleProducerAndSingleConsumer(); + demoMultipleProducersAndMultipleConsumers(); + } +} diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java new file mode 100644 index 0000000000..f1f6e1cc9c --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/SimpleProducerConsumerDemonstrator.java @@ -0,0 +1,60 @@ +package com.baeldung.producerconsumer; + +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingDeque; + +import static com.baeldung.producerconsumer.ThreadUtil.sleep; + +public class SimpleProducerConsumerDemonstrator { + BlockingQueue blockingQueue = new LinkedBlockingDeque<>(5); + + private void produce() { + while (true) { + double value = generateValue(); + try { + blockingQueue.put(value); + } catch (InterruptedException e) { + e.printStackTrace(); + break; + } + System.out.printf("[%s] Value produced: %f\n", Thread.currentThread().getName(), value); + } + } + + private void consume() { + while (true) { + Double value; + try { + value = blockingQueue.take(); + } catch (InterruptedException e) { + e.printStackTrace(); + break; + } + // Consume value + System.out.printf("[%s] Value consumed: %f\n", Thread.currentThread().getName(), value); + } + } + + private double generateValue() { + return Math.random(); + } + + private void runProducerConsumer() { + for (int i = 0; i < 2; i++) { + Thread producerThread = new Thread(this::produce); + producerThread.start(); + } + + for (int i = 0; i < 3; i++) { + Thread consumerThread = new Thread(this::consume); + consumerThread.start(); + } + } + + public static void main(String[] args) { + SimpleProducerConsumerDemonstrator simpleProducerConsumerDemonstrator = new SimpleProducerConsumerDemonstrator(); + simpleProducerConsumerDemonstrator.runProducerConsumer(); + sleep(2000); + System.exit(0); + } +} diff --git a/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ThreadUtil.java b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ThreadUtil.java new file mode 100644 index 0000000000..e49a9019fd --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-4/src/main/java/com/baeldung/producerconsumer/ThreadUtil.java @@ -0,0 +1,24 @@ +package com.baeldung.producerconsumer; + +import java.util.List; + +public class ThreadUtil { + public static void waitForAllThreadsToComplete(List threads) { + for(Thread thread: threads) { + try { + thread.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + public static void sleep(long interval) { + try { + // Wait for some time to demonstrate threads + Thread.sleep(interval); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} From edc11ea4f82cfcaa837e695c496b5d67e4ef51da Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 15 Mar 2022 19:49:00 +0530 Subject: [PATCH 09/43] JAVA-10358 Removed explicit groupId declaration from submodules --- maven-modules/maven-simple/parent-project/core/pom.xml | 1 - maven-modules/maven-simple/parent-project/service/pom.xml | 1 - maven-modules/maven-simple/parent-project/webapp/pom.xml | 1 - 3 files changed, 3 deletions(-) diff --git a/maven-modules/maven-simple/parent-project/core/pom.xml b/maven-modules/maven-simple/parent-project/core/pom.xml index c21addfff8..6553889c24 100644 --- a/maven-modules/maven-simple/parent-project/core/pom.xml +++ b/maven-modules/maven-simple/parent-project/core/pom.xml @@ -3,7 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.baeldung core core diff --git a/maven-modules/maven-simple/parent-project/service/pom.xml b/maven-modules/maven-simple/parent-project/service/pom.xml index 04cb1151e1..78d458c55a 100644 --- a/maven-modules/maven-simple/parent-project/service/pom.xml +++ b/maven-modules/maven-simple/parent-project/service/pom.xml @@ -3,7 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.baeldung service service diff --git a/maven-modules/maven-simple/parent-project/webapp/pom.xml b/maven-modules/maven-simple/parent-project/webapp/pom.xml index e3b6697758..f6cee60cbf 100644 --- a/maven-modules/maven-simple/parent-project/webapp/pom.xml +++ b/maven-modules/maven-simple/parent-project/webapp/pom.xml @@ -3,7 +3,6 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.baeldung webapp webapp From 14db41f53aa6a6fbf650d80a7529fb0c1d3d87f9 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 15 Mar 2022 20:23:29 +0530 Subject: [PATCH 10/43] JAVA-10561 Renamed org.baeldung to com.baeldung at all places --- maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml | 2 -- .../src/test/java/{org => com}/baeldung/CopyFileUnitTest.java | 2 +- maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml | 2 -- .../src/test/java/{org => com}/baeldung/CopyFileUnitTest.java | 2 +- maven-modules/maven-copy-files/maven-resources-plugin/pom.xml | 2 -- .../src/test/java/{org => com}/baeldung/CopyFileUnitTest.java | 2 +- 6 files changed, 3 insertions(+), 9 deletions(-) rename maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/{org => com}/baeldung/CopyFileUnitTest.java (94%) rename maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/{org => com}/baeldung/CopyFileUnitTest.java (94%) rename maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/{org => com}/baeldung/CopyFileUnitTest.java (94%) diff --git a/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml b/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml index 06a44ed4fb..dbc27b61f2 100644 --- a/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml +++ b/maven-modules/maven-copy-files/copy-rename-maven-plugin/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.baeldung copy-rename-maven-plugin - 1.0-SNAPSHOT copy-rename-maven-plugin diff --git a/maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java b/maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java similarity index 94% rename from maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java rename to maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java index a98db61fa9..94fa31a3ed 100644 --- a/maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java +++ b/maven-modules/maven-copy-files/copy-rename-maven-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; diff --git a/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml b/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml index b005f4b125..430d0a1f5b 100644 --- a/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml +++ b/maven-modules/maven-copy-files/maven-antrun-plugin/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.baeldung maven-antrun-plugin - 1.0-SNAPSHOT maven-antrun-plugin diff --git a/maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java b/maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java similarity index 94% rename from maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java rename to maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java index a98db61fa9..94fa31a3ed 100644 --- a/maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java +++ b/maven-modules/maven-copy-files/maven-antrun-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; diff --git a/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml b/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml index a49095f528..b2e99f80bc 100644 --- a/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml +++ b/maven-modules/maven-copy-files/maven-resources-plugin/pom.xml @@ -3,9 +3,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - org.baeldung maven-resources-plugin - 1.0-SNAPSHOT maven-resources-plugin diff --git a/maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java b/maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java similarity index 94% rename from maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java rename to maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java index a98db61fa9..94fa31a3ed 100644 --- a/maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/org/baeldung/CopyFileUnitTest.java +++ b/maven-modules/maven-copy-files/maven-resources-plugin/src/test/java/com/baeldung/CopyFileUnitTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; From a2dbf5d892b865b3c0d1d1ea0cbe1e3477c28a44 Mon Sep 17 00:00:00 2001 From: vaibhav007jain <72961247+vaibhav007jain@users.noreply.github.com> Date: Tue, 15 Mar 2022 21:09:20 +0530 Subject: [PATCH 11/43] BAEL-5385 Code for Automorphic Number. (#11928) --- .../automorphicnumber/AutomorphicNumber.java | 31 +++++++++++++++++++ .../AutomorphicNumberUnitTest.java | 19 ++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java create mode 100644 java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java diff --git a/java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java b/java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java new file mode 100644 index 0000000000..926b13deda --- /dev/null +++ b/java-numbers-4/src/main/java/com/baeldung/automorphicnumber/AutomorphicNumber.java @@ -0,0 +1,31 @@ +package com.baeldung.automorphicnumber; + +public class AutomorphicNumber { + + public static void main(String[] args) { + System.out.println(isAutomorphicUsingLoop(76)); + System.out.println(isAutomorphicUsingMath(76)); + } + + public static boolean isAutomorphicUsingMath(int number) { + int square = number * number; + + int numberOfDigits = (int) Math.floor(Math.log10(number) + 1); + int lastDigits = (int) (square % (Math.pow(10, numberOfDigits))); + + return number == lastDigits; + } + + public static boolean isAutomorphicUsingLoop(int number) { + int square = number * number; + + while (number > 0) { + if (number % 10 != square % 10) { + return false; + } + number /= 10; + square /= 10; + } + return true; + } +} \ No newline at end of file diff --git a/java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java b/java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java new file mode 100644 index 0000000000..8e31de9f47 --- /dev/null +++ b/java-numbers-4/src/test/java/com/baeldung/automorphicnumber/AutomorphicNumberUnitTest.java @@ -0,0 +1,19 @@ +package com.baeldung.automorphicnumber; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.jupiter.api.Test; + +public class AutomorphicNumberUnitTest { + + @Test + void givenANumber_whenPassed_thenShouldDetermineAutomorphicOrNot() { + int number1 = 76; // automorphic + int number2 = 16; // not automorphic + assertTrue(AutomorphicNumber.isAutomorphicUsingLoop(number1)); + assertFalse(AutomorphicNumber.isAutomorphicUsingLoop(number2)); + assertTrue(AutomorphicNumber.isAutomorphicUsingMath(number1)); + assertFalse(AutomorphicNumber.isAutomorphicUsingMath(number2)); + } +} From 14f2b7c2b85426f31ba88e9a30a8ec7dd62f2260 Mon Sep 17 00:00:00 2001 From: Mayank Aggarwal Date: Tue, 15 Mar 2022 22:14:34 +0530 Subject: [PATCH 12/43] [BAEL-5420] Added value object creation (#11901) * [BAEL-5420] Added value object creation * BAEL-5420 Added JavaBean and DTO classes * [BAEL-5420] Indented the code * Renamed EmployeePojo to EmployeePOJO * BAEL-5420: Renamed to EmployeeDTO * [BAEL-5420] Resolving Review comments Co-authored-by: Mayank Agarwal --- .../com/baeldung/employee/EmployeeBean.java | 48 ++++++++++++++++++ .../com/baeldung/employee/EmployeeDTO.java | 34 +++++++++++++ .../com/baeldung/employee/EmployeePOJO.java | 49 +++++++++++++++++++ .../com/baeldung/employee/EmployeeVO.java | 40 +++++++++++++++ 4 files changed, 171 insertions(+) create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeBean.java create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeDTO.java create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeePOJO.java create mode 100644 core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeVO.java diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeBean.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeBean.java new file mode 100644 index 0000000000..ed75a7157c --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeBean.java @@ -0,0 +1,48 @@ +package com.baeldung.employee; + +import java.io.Serializable; +import java.time.LocalDate; + +public class EmployeeBean implements Serializable { + + private static final long serialVersionUID = -3760445487636086034L; + + private String firstName; + private String lastName; + private LocalDate startDate; + + public EmployeeBean() { + + } + + public EmployeeBean(String firstName, String lastName, LocalDate startDate) { + this.firstName = firstName; + this.lastName = lastName; + this.startDate = startDate; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } + +} diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeDTO.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeDTO.java new file mode 100644 index 0000000000..beb6bf3ce5 --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeDTO.java @@ -0,0 +1,34 @@ +package com.baeldung.employee; + +import java.time.LocalDate; + +public class EmployeeDTO { + + private String firstName; + private String lastName; + private LocalDate startDate; + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } +} diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeePOJO.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeePOJO.java new file mode 100644 index 0000000000..50f17d965f --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeePOJO.java @@ -0,0 +1,49 @@ +package com.baeldung.employee; + +import java.time.LocalDate; +import java.util.Objects; + +public class EmployeePOJO { + + private String firstName; + private String lastName; + private LocalDate startDate; + + public EmployeePOJO(String firstName, String lastName, LocalDate startDate) { + this.firstName = firstName; + this.lastName = lastName; + this.startDate = startDate; + } + + public String name() { + return this.firstName + " " + this.lastName; + } + + public LocalDate getStart() { + return this.startDate; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public LocalDate getStartDate() { + return startDate; + } + + public void setStartDate(LocalDate startDate) { + this.startDate = startDate; + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeVO.java b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeVO.java new file mode 100644 index 0000000000..7a1775f79d --- /dev/null +++ b/core-java-modules/core-java-lang-4/src/main/java/com/baeldung/employee/EmployeeVO.java @@ -0,0 +1,40 @@ +package com.baeldung.employee; + +import java.time.LocalDate; +import java.util.Objects; + +public class EmployeeVO { + private String firstName; + private String lastName; + private LocalDate startDate; + + public EmployeeVO(String firstName, String lastName, LocalDate startDate) { + this.firstName = firstName; + this.lastName = lastName; + this.startDate = startDate; + } + + public String getFirstName() { + return firstName; + } + + public String getLastName() { + return lastName; + } + + public LocalDate getStartDate() { + return startDate; + } + + @Override + public boolean equals(Object obj) { + return Objects.equals(firstName, this.firstName) + && Objects.equals(lastName, this.lastName) + && Objects.equals(startDate, this.startDate); + } + + @Override + public int hashCode() { + return Objects.hash(firstName, lastName, startDate); + } +} From b2c7dece6b5bc6d0a4cc92f8ec871cdf96d12d50 Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 16 Mar 2022 16:50:55 +0530 Subject: [PATCH 13/43] COMAUTO-10561 Fixed parent version --- maven-modules/maven-simple/maven-dependency/pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maven-modules/maven-simple/maven-dependency/pom.xml b/maven-modules/maven-simple/maven-dependency/pom.xml index 628c1b62d4..ba63e53a1a 100644 --- a/maven-modules/maven-simple/maven-dependency/pom.xml +++ b/maven-modules/maven-simple/maven-dependency/pom.xml @@ -4,13 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 maven-dependency - 1.0.0-SNAPSHOT pom com.baeldung maven-simple - 0.0.1-SNAPSHOT + 1.0.0-SNAPSHOT From 20825bdd9b402cee9cca1f359bc6a50157269db5 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:02:12 +0800 Subject: [PATCH 14/43] Create README.md --- persistence-modules/fauna/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 persistence-modules/fauna/README.md diff --git a/persistence-modules/fauna/README.md b/persistence-modules/fauna/README.md new file mode 100644 index 0000000000..f0899ceaf7 --- /dev/null +++ b/persistence-modules/fauna/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Building a web app Using Fauna and Spring for Your First web Agency Client](https://www.baeldung.com/faunadb-spring-web-app) From aa751ab0443817fa12e3ae35ef5eeab00baa2946 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:09:51 +0800 Subject: [PATCH 15/43] Update README.md --- persistence-modules/java-mongodb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/java-mongodb/README.md b/persistence-modules/java-mongodb/README.md index 2b7fcd3de0..ae21f9df90 100644 --- a/persistence-modules/java-mongodb/README.md +++ b/persistence-modules/java-mongodb/README.md @@ -14,3 +14,4 @@ This module contains articles about MongoDB in Java. - [How to Check Field Existence in MongoDB?](https://www.baeldung.com/mongodb-check-field-exists) - [Get Last Inserted Document ID in MongoDB With Java Driver](https://www.baeldung.com/java-mongodb-last-inserted-id) - [Update Multiple Fields in a MongoDB Document](https://www.baeldung.com/mongodb-update-multiple-fields) +- [Update Documents in MongoDB](https://www.baeldung.com/mongodb-update-documents) From ad046e7fd6a1fdb712834589acedb3c190aa663e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:12:31 +0800 Subject: [PATCH 16/43] Update README.md --- spring-cloud/spring-cloud-openfeign/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud/spring-cloud-openfeign/README.md b/spring-cloud/spring-cloud-openfeign/README.md index 44f4d15b16..c1bd5ad43e 100644 --- a/spring-cloud/spring-cloud-openfeign/README.md +++ b/spring-cloud/spring-cloud-openfeign/README.md @@ -5,3 +5,4 @@ - [File Upload With Open Feign](https://www.baeldung.com/java-feign-file-upload) - [Feign Logging Configuration](https://www.baeldung.com/java-feign-logging) - [Provide an OAuth2 Token to a Feign Client](https://www.baeldung.com/spring-cloud-feign-oauth-token) +- [Retrieve Original Message From Feign ErrorDecoder](https://www.baeldung.com/feign-retrieve-original-message) From c8d224e24aea69f2da749438c8ad58568fc2b5d2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:16:20 +0800 Subject: [PATCH 17/43] Update README.md --- persistence-modules/java-mongodb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/java-mongodb/README.md b/persistence-modules/java-mongodb/README.md index ae21f9df90..50cc25d942 100644 --- a/persistence-modules/java-mongodb/README.md +++ b/persistence-modules/java-mongodb/README.md @@ -15,3 +15,4 @@ This module contains articles about MongoDB in Java. - [Get Last Inserted Document ID in MongoDB With Java Driver](https://www.baeldung.com/java-mongodb-last-inserted-id) - [Update Multiple Fields in a MongoDB Document](https://www.baeldung.com/mongodb-update-multiple-fields) - [Update Documents in MongoDB](https://www.baeldung.com/mongodb-update-documents) +- [Check Collection Existence in MongoDB](https://www.baeldung.com/java-check-collection-existence-mongodb) From 43b8b76b33c2901def547e88709711faf30461d9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:21:51 +0800 Subject: [PATCH 18/43] Update README.md --- spring-security-modules/spring-security-web-boot-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-security-modules/spring-security-web-boot-3/README.md b/spring-security-modules/spring-security-web-boot-3/README.md index 2f98e0f4a0..400039dbfe 100644 --- a/spring-security-modules/spring-security-web-boot-3/README.md +++ b/spring-security-modules/spring-security-web-boot-3/README.md @@ -13,4 +13,5 @@ The "REST With Spring" Classes: http://github.learnspringsecurity.com - [Fixing 401s with CORS Preflights and Spring Security](https://www.baeldung.com/spring-security-cors-preflight) - [Content Security Policy with Spring Security](https://www.baeldung.com/spring-security-csp) - [Enable Logging for Spring Security](https://www.baeldung.com/spring-security-enable-logging) +- [Authentication With Spring Security and MongoDB](https://www.baeldung.com/spring-security-authentication-mongodb) - More articles: [[<-- prev]](/spring-security-modules/spring-security-web-boot-2) From d7baaf8ced9376b32c59d261ba3d28829369da06 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:25:15 +0800 Subject: [PATCH 19/43] Update README.md --- core-java-modules/core-java-concurrency-advanced-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-concurrency-advanced-4/README.md b/core-java-modules/core-java-concurrency-advanced-4/README.md index ba838dbc72..808db89b12 100644 --- a/core-java-modules/core-java-concurrency-advanced-4/README.md +++ b/core-java-modules/core-java-concurrency-advanced-4/README.md @@ -5,3 +5,4 @@ - [Start Two Threads at the Exact Same Time in Java](https://www.baeldung.com/java-start-two-threads-at-same-time) - [Volatile Variables and Thread Safety](https://www.baeldung.com/java-volatile-variables-thread-safety) - [Producer-Consumer Problem With Example in Java](https://www.baeldung.com/java-producer-consumer-problem) +- [Acquire a Lock by a Key in Java](https://www.baeldung.com/java-acquire-lock-by-key) From 33d165653bd2148c4e989ebdacff5fdea6b5f6c2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:28:01 +0800 Subject: [PATCH 20/43] Update README.md --- persistence-modules/java-mongodb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/java-mongodb/README.md b/persistence-modules/java-mongodb/README.md index 50cc25d942..2c25cf5392 100644 --- a/persistence-modules/java-mongodb/README.md +++ b/persistence-modules/java-mongodb/README.md @@ -16,3 +16,4 @@ This module contains articles about MongoDB in Java. - [Update Multiple Fields in a MongoDB Document](https://www.baeldung.com/mongodb-update-multiple-fields) - [Update Documents in MongoDB](https://www.baeldung.com/mongodb-update-documents) - [Check Collection Existence in MongoDB](https://www.baeldung.com/java-check-collection-existence-mongodb) +- [Case Insensitive Sorting in MongoDB](https://www.baeldung.com/java-mongodb-case-insensitive-sorting) From 461db45f00fa56ec900780612aef7ac55b0b536f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:29:59 +0800 Subject: [PATCH 21/43] Update README.md --- xml-2/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/xml-2/README.md b/xml-2/README.md index e3c6ed6443..bc599f8480 100644 --- a/xml-2/README.md +++ b/xml-2/README.md @@ -2,4 +2,6 @@ This module contains articles about eXtensible Markup Language (XML) -### Relevant Articles: \ No newline at end of file +### Relevant Articles: + +- [Pretty-Print XML in Java](https://www.baeldung.com/java-pretty-print-xml) From cf99b18b1ddc4f4d2062f0dc52c9f311fba337c9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:32:53 +0800 Subject: [PATCH 22/43] Create README.md --- jakarta-ee/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 jakarta-ee/README.md diff --git a/jakarta-ee/README.md b/jakarta-ee/README.md new file mode 100644 index 0000000000..54f372f736 --- /dev/null +++ b/jakarta-ee/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Introduction to Jakarta EE MVC / Eclipse Krazo](https://www.baeldung.com/java-ee-mvc-eclipse-krazo) From 12eacbcfe79eeb2079f88231cfc120b6c49628b9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:38:26 +0800 Subject: [PATCH 23/43] Create README.md --- .../src/main/java/com/baeldung/swaggerresponseapi/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/swaggerresponseapi/README.md diff --git a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/swaggerresponseapi/README.md b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/swaggerresponseapi/README.md new file mode 100644 index 0000000000..a7ff3285ee --- /dev/null +++ b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/swaggerresponseapi/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Set List of Objects in Swagger API Response](https://www.baeldung.com/java-swagger-set-list-response) From 481bd47b897c3601931f4504fc4e275842a6aa9c Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:40:31 +0800 Subject: [PATCH 24/43] Update README.md --- persistence-modules/java-mongodb/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/java-mongodb/README.md b/persistence-modules/java-mongodb/README.md index 2c25cf5392..6f6bcba250 100644 --- a/persistence-modules/java-mongodb/README.md +++ b/persistence-modules/java-mongodb/README.md @@ -17,3 +17,4 @@ This module contains articles about MongoDB in Java. - [Update Documents in MongoDB](https://www.baeldung.com/mongodb-update-documents) - [Check Collection Existence in MongoDB](https://www.baeldung.com/java-check-collection-existence-mongodb) - [Case Insensitive Sorting in MongoDB](https://www.baeldung.com/java-mongodb-case-insensitive-sorting) +- [Push and Set Operations in Same MongoDB Update](https://www.baeldung.com/java-mongodb-push-set) From f20653b61653cb6a2ab6e1b6f73f17940d712ca4 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:42:19 +0800 Subject: [PATCH 25/43] Create README.md --- nginx-forward-proxy/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 nginx-forward-proxy/README.md diff --git a/nginx-forward-proxy/README.md b/nginx-forward-proxy/README.md new file mode 100644 index 0000000000..68ef37dcfb --- /dev/null +++ b/nginx-forward-proxy/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Using Nginx as a Forward Proxy](https://www.baeldung.com/nginx-forward-proxy) From 49630dc2f8379eb38967974fab9aa6a423d581ca Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:45:47 +0800 Subject: [PATCH 26/43] Update README.md --- core-java-modules/core-java-exceptions-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions-4/README.md b/core-java-modules/core-java-exceptions-4/README.md index e77787a8a3..7df8ef65b9 100644 --- a/core-java-modules/core-java-exceptions-4/README.md +++ b/core-java-modules/core-java-exceptions-4/README.md @@ -2,3 +2,4 @@ - [Java ArrayIndexOutOfBoundsException](https://www.baeldung.com/java-arrayindexoutofboundsexception) - [Java Missing Return Statement](https://www.baeldung.com/java-missing-return-statement) +- [Convert long to int Type in Java](https://www.baeldung.com/java-convert-long-to-int) From 743ccdec161767e83806fe0030acb051faed8aa6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:47:44 +0800 Subject: [PATCH 27/43] Update README.md --- java-numbers-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-numbers-4/README.md b/java-numbers-4/README.md index f053a82b80..a6d866218c 100644 --- a/java-numbers-4/README.md +++ b/java-numbers-4/README.md @@ -4,3 +4,4 @@ - [Understanding the & 0xff Value in Java](https://www.baeldung.com/java-and-0xff) - [Determine if an Integer’s Square Root Is an Integer in Java](https://www.baeldung.com/java-find-if-square-root-is-integer) - [Guide to Java BigInteger](https://www.baeldung.com/java-biginteger) +- [Automorphic Numbers in Java](https://www.baeldung.com/java-automorphic-numbers) From 8439ee3c455a06004159e54fc0f301be0779692f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Mar 2022 21:50:01 +0800 Subject: [PATCH 28/43] Update README.md --- core-java-modules/core-java-lang-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-4/README.md b/core-java-modules/core-java-lang-4/README.md index e2a74b36af..a145633d2b 100644 --- a/core-java-modules/core-java-lang-4/README.md +++ b/core-java-modules/core-java-lang-4/README.md @@ -10,3 +10,4 @@ This module contains articles about core features in the Java language - [Tiered Compilation in JVM](https://www.baeldung.com/jvm-tiered-compilation) - [Fixing the “Declared package does not match the expected package” Error](https://www.baeldung.com/java-declared-expected-package-error) - [Chaining Constructors in Java](https://www.baeldung.com/java-chain-constructors) +- [Difference Between POJO, JavaBeans, DTO and VO](https://www.baeldung.com/java-pojo-javabeans-dto-vo) From 3d4c951f3e24fc8b83d18ea16202e5d8c456b142 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Wed, 16 Mar 2022 21:24:03 +0530 Subject: [PATCH 29/43] JAVA-10136: Fix references to parents --- reactive-systems/inventory-service/pom.xml | 3 +-- reactive-systems/order-service/pom.xml | 3 +-- reactive-systems/pom.xml | 5 +++-- reactive-systems/shipping-service/pom.xml | 3 +-- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/reactive-systems/inventory-service/pom.xml b/reactive-systems/inventory-service/pom.xml index 86575d498c..4aeec24922 100644 --- a/reactive-systems/inventory-service/pom.xml +++ b/reactive-systems/inventory-service/pom.xml @@ -10,9 +10,8 @@ com.baeldung - parent-boot-2 + reactive-systems 0.0.1-SNAPSHOT - ../../parent-boot-2 diff --git a/reactive-systems/order-service/pom.xml b/reactive-systems/order-service/pom.xml index e6453732b4..b9e5d36d3a 100644 --- a/reactive-systems/order-service/pom.xml +++ b/reactive-systems/order-service/pom.xml @@ -10,9 +10,8 @@ com.baeldung - parent-boot-2 + reactive-systems 0.0.1-SNAPSHOT - ../../parent-boot-2 diff --git a/reactive-systems/pom.xml b/reactive-systems/pom.xml index 81462090b8..b984fc7cd8 100644 --- a/reactive-systems/pom.xml +++ b/reactive-systems/pom.xml @@ -10,8 +10,9 @@ com.baeldung - parent-modules - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT + ../parent-boot-2 diff --git a/reactive-systems/shipping-service/pom.xml b/reactive-systems/shipping-service/pom.xml index f725ca72d1..5fac674bbc 100644 --- a/reactive-systems/shipping-service/pom.xml +++ b/reactive-systems/shipping-service/pom.xml @@ -10,9 +10,8 @@ com.baeldung - parent-boot-2 + reactive-systems 0.0.1-SNAPSHOT - ../../parent-boot-2 From 054a3bcda4a3f4fc297b28977fb10f41e43ea1ac Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Thu, 17 Mar 2022 15:56:59 +0530 Subject: [PATCH 30/43] JAVA-10083 Changes as per review comments --- persistence-modules/hibernate-queries/pom.xml | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/persistence-modules/hibernate-queries/pom.xml b/persistence-modules/hibernate-queries/pom.xml index f0307a6eaf..4f5de5c06e 100644 --- a/persistence-modules/hibernate-queries/pom.xml +++ b/persistence-modules/hibernate-queries/pom.xml @@ -82,33 +82,12 @@ ${jmh-generator.version} - - com.sun.xml.bind - jaxb-core - ${com.sun.xml.version} - - - javax.xml.bind - jaxb-api - ${javax.xml.bind.version} - - - com.sun.xml.bind - jaxb-impl - ${com.sun.xml.version} - - 5.0.2.RELEASE 1.10.6.RELEASE - - 5.2.10.Final 9.0.0.M26 - 2.3.4 - 2.3.0.1 - 2.3.1 6.0.6 2.2.3 From 7c6e2a770df722a9a6bfe732eee170baa24a56c6 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Thu, 17 Mar 2022 11:44:37 +0100 Subject: [PATCH 31/43] JAVA-10455: Upgrade parent-boot-2 to Spring Boot 2.6.4 (#11932) --- parent-boot-2/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parent-boot-2/pom.xml b/parent-boot-2/pom.xml index b7f33de237..85f1805a00 100644 --- a/parent-boot-2/pom.xml +++ b/parent-boot-2/pom.xml @@ -88,7 +88,7 @@ 3.3.0 1.0.22.RELEASE - 2.6.3 + 2.6.4 1.9.1 From 2ba43ea76b7a6678dc90e32974ba97fbc8a0d080 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Thu, 17 Mar 2022 22:06:38 +0530 Subject: [PATCH 32/43] JAVA-10132: Align module names, folder names and artifact id --- jakarta-ee/pom.xml | 47 ++++++++---------- persistence-modules/fauna/pom.xml | 26 ++++++---- spring-cloud/pom.xml | 2 +- .../README.md | 0 .../pom.xml | 0 .../.gitignore | 0 .../.mvn/wrapper/MavenWrapperDownloader.java | 0 .../.mvn/wrapper/maven-wrapper.jar | Bin .../.mvn/wrapper/maven-wrapper.properties | 0 .../spring-cloud-loadbalancer-client/mvnw | 0 .../spring-cloud-loadbalancer-client/mvnw.cmd | 0 .../spring-cloud-loadbalancer-client/pom.xml | 0 .../client/ClientApplication.java | 0 .../src/main/resources/application.properties | 0 .../.gitignore | 0 .../.mvn/wrapper/MavenWrapperDownloader.java | 0 .../.mvn/wrapper/maven-wrapper.jar | Bin .../.mvn/wrapper/maven-wrapper.properties | 0 .../spring-cloud-loadbalancer-server/mvnw | 0 .../spring-cloud-loadbalancer-server/mvnw.cmd | 0 .../spring-cloud-loadbalancer-server/pom.xml | 0 .../server/ServerApplication.java | 0 .../src/main/resources/application.properties | 0 23 files changed, 38 insertions(+), 37 deletions(-) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/README.md (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/pom.xml (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/.gitignore (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/.mvn/wrapper/MavenWrapperDownloader.java (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.jar (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.properties (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/mvnw (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/mvnw.cmd (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/pom.xml (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/src/main/java/com/baeldung/spring/cloud/loadbalancer/client/ClientApplication.java (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-client/src/main/resources/application.properties (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/.gitignore (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/.mvn/wrapper/MavenWrapperDownloader.java (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.jar (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.properties (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/mvnw (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/mvnw.cmd (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/pom.xml (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/src/main/java/com/baeldung/spring/cloud/loadbalancer/server/ServerApplication.java (100%) rename spring-cloud/{spring-cloud-load-balancer => spring-cloud-loadbalancer}/spring-cloud-loadbalancer-server/src/main/resources/application.properties (100%) diff --git a/jakarta-ee/pom.xml b/jakarta-ee/pom.xml index 074ca1eec8..dea4437345 100644 --- a/jakarta-ee/pom.xml +++ b/jakarta-ee/pom.xml @@ -1,28 +1,13 @@ - + 4.0.0 - com.baeldung - mvc-2.0 + jakarta-ee 1.0-SNAPSHOT + jakarta-ee war - mvc-2.0 - - - 9.0.0 - 2.0.0 - 2.0.0 - 5.8.2 - C:/glassfish6 - admin - mvn-domain - 1.10.19 - - ${local.glassfish.home}\\domains\\${local.glassfish.domain}\\config\\domain-passwords - - - jakarta.platform @@ -30,13 +15,11 @@ ${jakartaee-api.version} provided - jakarta.mvc jakarta.mvc-api ${jakarta.mvc-api.version} - org.eclipse.krazo krazo-jersey @@ -54,7 +37,6 @@ ${mockito.version} test - @@ -67,7 +49,7 @@ ${local.glassfish.home} admin - + password @@ -108,4 +90,19 @@ - + + + 9.0.0 + 2.0.0 + 2.0.0 + 5.8.2 + C:/glassfish6 + admin + mvn-domain + 1.10.19 + + ${local.glassfish.home}\\domains\\${local.glassfish.domain}\\config\\domain-passwords + + + + \ No newline at end of file diff --git a/persistence-modules/fauna/pom.xml b/persistence-modules/fauna/pom.xml index 67aabb7501..ff18865e5f 100644 --- a/persistence-modules/fauna/pom.xml +++ b/persistence-modules/fauna/pom.xml @@ -1,21 +1,21 @@ - 4.0.0 + com.baeldung + fauna + 0.0.1-SNAPSHOT + fauna + Blogging Service built with FaunaDB + org.springframework.boot spring-boot-starter-parent 2.6.2 - + - com.baeldung - fauna-blog - 0.0.1-SNAPSHOT - fauna-blog - Blogging Service built with FaunaDB - - 17 - + org.springframework.boot @@ -53,4 +53,8 @@ - + + 17 + + + \ No newline at end of file diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 75010fbd34..c5ebb4116a 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -17,7 +17,7 @@ - spring-cloud-load-balancer + spring-cloud-loadbalancer spring-cloud-config spring-cloud-eureka spring-cloud-hystrix diff --git a/spring-cloud/spring-cloud-load-balancer/README.md b/spring-cloud/spring-cloud-loadbalancer/README.md similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/README.md rename to spring-cloud/spring-cloud-loadbalancer/README.md diff --git a/spring-cloud/spring-cloud-load-balancer/pom.xml b/spring-cloud/spring-cloud-loadbalancer/pom.xml similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/pom.xml rename to spring-cloud/spring-cloud-loadbalancer/pom.xml diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.gitignore b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.gitignore similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.gitignore rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.gitignore diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.mvn/wrapper/MavenWrapperDownloader.java b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.mvn/wrapper/MavenWrapperDownloader.java similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.mvn/wrapper/MavenWrapperDownloader.java rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.mvn/wrapper/MavenWrapperDownloader.java diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.jar b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.jar rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.jar diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.properties b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.properties rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/.mvn/wrapper/maven-wrapper.properties diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/mvnw b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/mvnw similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/mvnw rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/mvnw diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/mvnw.cmd b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/mvnw.cmd similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/mvnw.cmd rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/mvnw.cmd diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/pom.xml b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/pom.xml similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/pom.xml rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/pom.xml diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/src/main/java/com/baeldung/spring/cloud/loadbalancer/client/ClientApplication.java b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/src/main/java/com/baeldung/spring/cloud/loadbalancer/client/ClientApplication.java similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/src/main/java/com/baeldung/spring/cloud/loadbalancer/client/ClientApplication.java rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/src/main/java/com/baeldung/spring/cloud/loadbalancer/client/ClientApplication.java diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/src/main/resources/application.properties b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/src/main/resources/application.properties similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-client/src/main/resources/application.properties rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-client/src/main/resources/application.properties diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.gitignore b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.gitignore similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.gitignore rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.gitignore diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.mvn/wrapper/MavenWrapperDownloader.java b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.mvn/wrapper/MavenWrapperDownloader.java similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.mvn/wrapper/MavenWrapperDownloader.java rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.mvn/wrapper/MavenWrapperDownloader.java diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.jar b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.jar rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.jar diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.properties b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.properties rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/.mvn/wrapper/maven-wrapper.properties diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/mvnw b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/mvnw similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/mvnw rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/mvnw diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/mvnw.cmd b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/mvnw.cmd similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/mvnw.cmd rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/mvnw.cmd diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/pom.xml b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/pom.xml similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/pom.xml rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/pom.xml diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/src/main/java/com/baeldung/spring/cloud/loadbalancer/server/ServerApplication.java b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/src/main/java/com/baeldung/spring/cloud/loadbalancer/server/ServerApplication.java similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/src/main/java/com/baeldung/spring/cloud/loadbalancer/server/ServerApplication.java rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/src/main/java/com/baeldung/spring/cloud/loadbalancer/server/ServerApplication.java diff --git a/spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/src/main/resources/application.properties b/spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/src/main/resources/application.properties similarity index 100% rename from spring-cloud/spring-cloud-load-balancer/spring-cloud-loadbalancer-server/src/main/resources/application.properties rename to spring-cloud/spring-cloud-loadbalancer/spring-cloud-loadbalancer-server/src/main/resources/application.properties From d01b0734d32a6084917cb18a24fb62a426985b14 Mon Sep 17 00:00:00 2001 From: AttilaUhrin Date: Fri, 18 Mar 2022 04:16:47 +0100 Subject: [PATCH 33/43] [BAEL-5373] A Guide to @DBRef in MongoDB (#11909) * Add implementation for BAEL-5373. * Fix test class name. * Change collection names to be aligned with article. --- .../mongodb/dbref/DbRefApplication.java | 13 ++++ .../baeldung/mongodb/dbref/DbRefTester.java | 26 +++++++ .../baeldung/mongodb/dbref/model/Person.java | 49 ++++++++++++ .../com/baeldung/mongodb/dbref/model/Pet.java | 29 ++++++++ .../dbref/repository/PersonRepository.java | 9 +++ .../mongodb/dbref/DbRefIntegrationTest.java | 74 +++++++++++++++++++ 6 files changed, 200 insertions(+) create mode 100644 persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java create mode 100644 persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefTester.java create mode 100644 persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Person.java create mode 100644 persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Pet.java create mode 100644 persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/repository/PersonRepository.java create mode 100644 persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/mongodb/dbref/DbRefIntegrationTest.java diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java new file mode 100644 index 0000000000..b358b3b974 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.mongodb.dbref; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class DbRefApplication { + + public static void main(String... args) { + SpringApplication.run(DbRefApplication.class, args); + } + +} diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefTester.java b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefTester.java new file mode 100644 index 0000000000..58641e1258 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefTester.java @@ -0,0 +1,26 @@ +package com.baeldung.mongodb.dbref; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.stereotype.Component; + +import com.baeldung.mongodb.dbref.repository.PersonRepository; + +@Component +public class DbRefTester implements ApplicationRunner { + + private static final Logger logger = LoggerFactory.getLogger(DbRefTester.class); + + @Autowired + private PersonRepository personRepository; + + @Override + public void run(ApplicationArguments args) throws Exception { + logger.info("{}", personRepository.findAll()); + + } + +} diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Person.java b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Person.java new file mode 100644 index 0000000000..7b7826e716 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Person.java @@ -0,0 +1,49 @@ +package com.baeldung.mongodb.dbref.model; + +import java.util.List; + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.DBRef; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document(collection = "Person") +public class Person { + + @Id + private String id; + + private String name; + + @DBRef + private List pets; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public List getPets() { + return pets; + } + + public void setPets(List pets) { + this.pets = pets; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Person [id=" + id + ", name=" + name + ", pets=" + pets + "]"; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Pet.java b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Pet.java new file mode 100644 index 0000000000..1b83d4ca23 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/model/Pet.java @@ -0,0 +1,29 @@ +package com.baeldung.mongodb.dbref.model; + +public class Pet { + + private String id; + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + @Override + public String toString() { + return "Pet [id=" + id + ", name=" + name + "]"; + } + +} diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/repository/PersonRepository.java b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/repository/PersonRepository.java new file mode 100644 index 0000000000..2ef5a9dbd6 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/repository/PersonRepository.java @@ -0,0 +1,9 @@ +package com.baeldung.mongodb.dbref.repository; + +import org.springframework.data.mongodb.repository.MongoRepository; + +import com.baeldung.mongodb.dbref.model.Person; + +public interface PersonRepository extends MongoRepository { + +} diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/mongodb/dbref/DbRefIntegrationTest.java b/persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/mongodb/dbref/DbRefIntegrationTest.java new file mode 100644 index 0000000000..c357c0283c --- /dev/null +++ b/persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/mongodb/dbref/DbRefIntegrationTest.java @@ -0,0 +1,74 @@ +package com.baeldung.mongodb.dbref; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baeldung.mongodb.dbref.model.Person; +import com.baeldung.mongodb.dbref.model.Pet; +import com.baeldung.mongodb.dbref.repository.PersonRepository; +import com.mongodb.BasicDBObjectBuilder; +import com.mongodb.DBObject; +import com.mongodb.DBRef; + +@RunWith(SpringRunner.class) +@SpringBootTest +@DirtiesContext +public class DbRefIntegrationTest { + + @Autowired + PersonRepository personRepository; + + @Autowired + private MongoTemplate mongoTemplate; + + @Test + public void givenPetsAndPersonInDatabase_whenListPersons_thenReferenceIsFetched() { + // given + DBObject catInDatabase = BasicDBObjectBuilder.start() + .add("name", "Loki") + .get(); + + DBObject dogInDatabase = BasicDBObjectBuilder.start() + .add("name", "Max") + .get(); + + mongoTemplate.save(catInDatabase, "Cat"); + mongoTemplate.save(dogInDatabase, "Dog"); + + List petsReference = new ArrayList(); + petsReference.add(new DBRef("Cat", catInDatabase.get("_id"))); + petsReference.add(new DBRef("Dog", dogInDatabase.get("_id"))); + + DBObject personInDatabase = BasicDBObjectBuilder.start() + .add("name", "Bob") + .add("pets", petsReference) + .get(); + + mongoTemplate.save(personInDatabase, "Person"); + + // when + List persons = personRepository.findAll(); + + // then + assertThat(persons).hasSize(1); + Person person = persons.get(0); + assertEquals("Bob", person.getName()); + + List pets = person.getPets(); + assertThat(pets).hasSize(2); + assertThat(pets).anyMatch(pet -> "Loki".equals(pet.getName())); + assertThat(pets).anyMatch(pet -> "Max".equals(pet.getName())); + } + +} From c6a8b181b8cce33c0a1bd3d77a8f9bcdd178c635 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Fri, 18 Mar 2022 08:00:13 +0100 Subject: [PATCH 34/43] JAVA-10238: Use random port in the integration test --- .../rpc/finagle/FinagleIntegrationTest.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/libraries-rpc/src/test/java/com/baeldung/rpc/finagle/FinagleIntegrationTest.java b/libraries-rpc/src/test/java/com/baeldung/rpc/finagle/FinagleIntegrationTest.java index 8dcdb19e7e..a73761f9f7 100644 --- a/libraries-rpc/src/test/java/com/baeldung/rpc/finagle/FinagleIntegrationTest.java +++ b/libraries-rpc/src/test/java/com/baeldung/rpc/finagle/FinagleIntegrationTest.java @@ -10,16 +10,23 @@ import com.twitter.util.Future; import org.junit.Test; import scala.runtime.BoxedUnit; +import java.io.IOException; +import java.net.ServerSocket; + import static org.junit.Assert.assertEquals; public class FinagleIntegrationTest { + + private static final int DEFAULT_PORT = 8079; + @Test public void givenServerAndClient_whenRequestSent_thenClientShouldReceiveResponseFromServer() throws Exception { // given + int port = randomPort(); Service serverService = new LogFilter().andThen(new GreetingService()); - Http.serve(":8080", serverService); + Http.serve(":" + port, serverService); - Service clientService = new LogFilter().andThen(Http.newService(":8080")); + Service clientService = new LogFilter().andThen(Http.newService(":" + port)); // when Request request = Request.apply(Method.Get(), "/?name=John"); @@ -37,4 +44,13 @@ public class FinagleIntegrationTest { }) ); } + + private int randomPort() { + try (ServerSocket socket = new ServerSocket(0)) { + return socket.getLocalPort(); + + } catch (IOException e) { + return DEFAULT_PORT; + } + } } From 1b9bbe538b7863c12b9bd2a51ac3e8a89a808de6 Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Sat, 19 Mar 2022 16:50:31 +0000 Subject: [PATCH 35/43] [JAVA-8146] Update artifact versions --- spring-reactive/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-reactive/pom.xml b/spring-reactive/pom.xml index d755c03ae0..37df1a820d 100644 --- a/spring-reactive/pom.xml +++ b/spring-reactive/pom.xml @@ -94,9 +94,9 @@ - 3.4.12 - 1.2.2.RELEASE - 2.2.19 + 3.4.16 + 1.3.10 + 2.2.21 \ No newline at end of file From 10bde9d0af4fe39a18cbc2f90a7caf9f7e4b04ae Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Sat, 19 Mar 2022 18:27:30 +0000 Subject: [PATCH 36/43] [JAVA-10500] Investigate and reduce springdoc build time --- .../spring-boot-springdoc/pom.xml | 55 ----------- .../restdocopenapi/FooController.java | 5 +- .../src/main/resources/logback.xml | 5 +- .../restdoc/SpringRestDocsUnitTest.java | 96 +++++++++++-------- .../baeldung/springdoc/SpringContextTest.java | 14 +-- .../{logback.xml => logback-test.xml} | 0 6 files changed, 66 insertions(+), 109 deletions(-) rename spring-boot-modules/spring-boot-springdoc/src/test/resources/{logback.xml => logback-test.xml} (100%) diff --git a/spring-boot-modules/spring-boot-springdoc/pom.xml b/spring-boot-modules/spring-boot-springdoc/pom.xml index d13efba450..e7d4a35d97 100644 --- a/spring-boot-modules/spring-boot-springdoc/pom.xml +++ b/spring-boot-modules/spring-boot-springdoc/pom.xml @@ -37,10 +37,6 @@ spring-boot-starter-test test - - org.hibernate - hibernate-core - org.springdoc @@ -63,21 +59,6 @@ spring-restdocs-restassured test - - - org.springdoc - springdoc-openapi-kotlin - ${springdoc.version} - - - org.jetbrains.kotlin - kotlin-stdlib-jdk8 - ${kotlin.version} - - - org.jetbrains.kotlin - kotlin-reflect - @@ -109,41 +90,6 @@ - - - kotlin-maven-plugin - org.jetbrains.kotlin - ${kotlin.version} - - - spring - - ${java.version} - - - - compile - compile - - compile - - - - test-compile - test-compile - - test-compile - - - - - - org.jetbrains.kotlin - kotlin-maven-allopen - ${kotlin.version} - - - @@ -208,7 +154,6 @@ 1.6.4 1.5.6 - 1.6.0 ${project.build.directory}/generated-snippets diff --git a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/restdocopenapi/FooController.java b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/restdocopenapi/FooController.java index 55c2cccb3c..892eb05f8d 100644 --- a/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/restdocopenapi/FooController.java +++ b/spring-boot-modules/spring-boot-springdoc/src/main/java/com/baeldung/restdocopenapi/FooController.java @@ -40,7 +40,8 @@ public class FooController { public ResponseEntity getFooById(@PathVariable("id") Long id) { Optional foo = repository.findById(id); - return foo.isPresent() ? new ResponseEntity<>(foo.get(), HttpStatus.OK) : new ResponseEntity<>(HttpStatus.NOT_FOUND); + return foo.map(value -> new ResponseEntity<>(value, HttpStatus.OK)) + .orElseGet(() -> new ResponseEntity<>(HttpStatus.NOT_FOUND)); } @PostMapping @@ -70,7 +71,7 @@ public class FooController { @PutMapping("/{id}") public ResponseEntity updateFoo(@PathVariable("id") long id, @RequestBody Foo foo) { - boolean isFooPresent = repository.existsById(Long.valueOf(id)); + boolean isFooPresent = repository.existsById(id); if (!isFooPresent) { return new ResponseEntity<>(HttpStatus.NOT_FOUND); diff --git a/spring-boot-modules/spring-boot-springdoc/src/main/resources/logback.xml b/spring-boot-modules/spring-boot-springdoc/src/main/resources/logback.xml index 6a07b178e9..73dd672c1a 100644 --- a/spring-boot-modules/spring-boot-springdoc/src/main/resources/logback.xml +++ b/spring-boot-modules/spring-boot-springdoc/src/main/resources/logback.xml @@ -7,10 +7,7 @@ - - - - + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/restdocopenapi/restdoc/SpringRestDocsUnitTest.java b/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/restdocopenapi/restdoc/SpringRestDocsUnitTest.java index 4d37abf78a..41e870e2e8 100644 --- a/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/restdocopenapi/restdoc/SpringRestDocsUnitTest.java +++ b/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/restdocopenapi/restdoc/SpringRestDocsUnitTest.java @@ -1,6 +1,32 @@ package com.baeldung.restdocopenapi.restdoc; +import com.baeldung.restdocopenapi.Foo; +import com.baeldung.restdocopenapi.FooController; +import com.baeldung.restdocopenapi.FooRepository; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.hateoas.MediaTypes; +import org.springframework.restdocs.RestDocumentationContextProvider; +import org.springframework.restdocs.RestDocumentationExtension; +import org.springframework.restdocs.constraints.ConstraintDescriptions; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +import static java.util.Collections.singletonList; import static org.hamcrest.Matchers.containsString; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.documentationConfiguration; import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.delete; @@ -15,99 +41,89 @@ import static org.springframework.restdocs.payload.PayloadDocumentation.requestF import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.pathParameters; -import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.util.StringUtils.collectionToDelimitedString; -import java.util.HashMap; -import java.util.Map; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.hateoas.MediaTypes; -import org.springframework.restdocs.RestDocumentationContextProvider; -import org.springframework.restdocs.RestDocumentationExtension; -import org.springframework.restdocs.constraints.ConstraintDescriptions; -import org.springframework.test.context.junit.jupiter.SpringExtension; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import org.springframework.web.context.WebApplicationContext; - -import com.baeldung.restdocopenapi.Application; -import com.baeldung.restdocopenapi.Foo; -import com.fasterxml.jackson.databind.ObjectMapper; - @ExtendWith({ RestDocumentationExtension.class, SpringExtension.class }) -@SpringBootTest(classes = Application.class) -public class SpringRestDocsUnitTest { +@WebMvcTest(FooController.class) +class SpringRestDocsUnitTest { private MockMvc mockMvc; - + + @MockBean + private FooRepository fooRepository; + @Autowired private ObjectMapper objectMapper; @BeforeEach - public void setup(WebApplicationContext webApplicationContext, RestDocumentationContextProvider restDocumentation) { + void setup(WebApplicationContext webApplicationContext, RestDocumentationContextProvider restDocumentation) { this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .apply(documentationConfiguration(restDocumentation)) .build(); } @Test - public void whenGetFoo_thenSuccessful() throws Exception { + void whenGetAllFoo_thenSuccessful() throws Exception { + when(fooRepository.findAll()) + .thenReturn(singletonList(new Foo(1, "Foo 1", "Foo 1"))); + this.mockMvc.perform(get("/foo")) - .andDo(print()) .andExpect(status().isOk()) .andExpect(content().string(containsString("Foo 1"))) .andDo(document("getAllFoos")); } @Test - public void whenGetFooById_thenSuccessful() throws Exception { + void whenGetFooById_thenSuccessful() throws Exception { ConstraintDescriptions desc = new ConstraintDescriptions(Foo.class); + when(fooRepository.findById(1L)) + .thenReturn(Optional.of(new Foo(1, "title", "body"))); + this.mockMvc.perform(get("/foo/{id}", 1)) .andExpect(status().isOk()) - .andDo(document("getAFoo", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), + .andDo(document("getAFoo", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), pathParameters(parameterWithName("id").description("id of foo to be searched")), responseFields(fieldWithPath("id").description("The id of the foo" + collectionToDelimitedString(desc.descriptionsForProperty("id"), ". ")), fieldWithPath("title").description("The title of the foo"), fieldWithPath("body").description("The body of the foo")))); } @Test - public void whenPostFoo_thenSuccessful() throws Exception { + void whenPostFoo_thenSuccessful() throws Exception { Map foo = new HashMap<>(); foo.put("id", 4L); foo.put("title", "New Foo"); foo.put("body", "Body of New Foo"); - + this.mockMvc.perform(post("/foo").contentType(MediaTypes.HAL_JSON) .content(this.objectMapper.writeValueAsString(foo))) .andExpect(status().isCreated()) .andDo(document("createFoo", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint()), requestFields(fieldWithPath("id").description("The id of the foo"), fieldWithPath("title").description("The title of the foo"), fieldWithPath("body").description("The body of the foo")))); } - + @Test - public void whenDeleteFoo_thenSuccessful() throws Exception { + void whenDeleteFoo_thenSuccessful() throws Exception { this.mockMvc.perform(delete("/foo/{id}", 2)) .andExpect(status().isNoContent()) .andDo(document("deleteFoo", pathParameters(parameterWithName("id").description("The id of the foo to delete")))); } - + @Test - public void whenUpdateFoo_thenSuccessful() throws Exception { - + void whenUpdateFoo_thenSuccessful() throws Exception { + + when(fooRepository.existsById(3L)).thenReturn(true); + when(fooRepository.save(any(Foo.class))) + .thenReturn(new Foo(3, "Updated Foo", "Body of updated Foo")); + ConstraintDescriptions desc = new ConstraintDescriptions(Foo.class); - + Map foo = new HashMap<>(); foo.put("title", "Updated Foo"); foo.put("body", "Body of Updated Foo"); - + this.mockMvc.perform(put("/foo/{id}", 3).contentType(MediaTypes.HAL_JSON) .content(this.objectMapper.writeValueAsString(foo))) .andExpect(status().isOk()) @@ -115,6 +131,4 @@ public class SpringRestDocsUnitTest { responseFields(fieldWithPath("id").description("The id of the updated foo" + collectionToDelimitedString(desc.descriptionsForProperty("id"), ". ")), fieldWithPath("title").description("The title of the updated foo"), fieldWithPath("body").description("The body of the updated foo")))); } - - } diff --git a/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/springdoc/SpringContextTest.java b/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/springdoc/SpringContextTest.java index 4cd84477b9..d7cd6bc30b 100644 --- a/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/springdoc/SpringContextTest.java +++ b/spring-boot-modules/spring-boot-springdoc/src/test/java/com/baeldung/springdoc/SpringContextTest.java @@ -1,17 +1,17 @@ package com.baeldung.springdoc; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; -@RunWith(SpringRunner.class) +@ExtendWith(SpringExtension.class) @SpringBootTest -public class SpringContextTest { +class SpringContextTest { @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - + void whenSpringContextIsBootstrapped_thenNoExceptions() { + } } diff --git a/spring-boot-modules/spring-boot-springdoc/src/test/resources/logback.xml b/spring-boot-modules/spring-boot-springdoc/src/test/resources/logback-test.xml similarity index 100% rename from spring-boot-modules/spring-boot-springdoc/src/test/resources/logback.xml rename to spring-boot-modules/spring-boot-springdoc/src/test/resources/logback-test.xml From c6e2b905f5010c22fc21198433be3c26233e4734 Mon Sep 17 00:00:00 2001 From: ACHRAF TAITAI <43656331+achraftt@users.noreply.github.com> Date: Sun, 20 Mar 2022 08:45:32 +0100 Subject: [PATCH 37/43] BAEL-5413: populate a drop down with a list (#11947) --- .../dropDownList/DropDownListController.java | 24 +++++++++++++++++++ .../templates/dropDownList/dropDownList.html | 14 +++++++++++ 2 files changed, 38 insertions(+) create mode 100644 spring-web-modules/spring-thymeleaf-3/src/main/java/com/baeldung/thymeleaf/dropDownList/DropDownListController.java create mode 100644 spring-web-modules/spring-thymeleaf-3/src/main/resources/templates/dropDownList/dropDownList.html diff --git a/spring-web-modules/spring-thymeleaf-3/src/main/java/com/baeldung/thymeleaf/dropDownList/DropDownListController.java b/spring-web-modules/spring-thymeleaf-3/src/main/java/com/baeldung/thymeleaf/dropDownList/DropDownListController.java new file mode 100644 index 0000000000..ba1f1b0a49 --- /dev/null +++ b/spring-web-modules/spring-thymeleaf-3/src/main/java/com/baeldung/thymeleaf/dropDownList/DropDownListController.java @@ -0,0 +1,24 @@ +package com.baeldung.thymeleaf.dropDownList; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.util.ArrayList; +import java.util.List; + +@Controller +public class DropDownListController { + + @RequestMapping(value = "/populateDropDownList", method = RequestMethod.GET) public String populateList(Model model) { + List options = new ArrayList(); + options.add("option 1"); + options.add("option 2"); + options.add("option 3"); + options.add("option 4"); + model.addAttribute("options", options); + return "dropDownList/dropDownList.html"; + } + +} diff --git a/spring-web-modules/spring-thymeleaf-3/src/main/resources/templates/dropDownList/dropDownList.html b/spring-web-modules/spring-thymeleaf-3/src/main/resources/templates/dropDownList/dropDownList.html new file mode 100644 index 0000000000..cc2c504b32 --- /dev/null +++ b/spring-web-modules/spring-thymeleaf-3/src/main/resources/templates/dropDownList/dropDownList.html @@ -0,0 +1,14 @@ + + + +Populate a drop down with a list using thymeleaf + + +

Populate a drop down with a list using thymeleaf

+ + + From 2e4b518c4b039d0480bd5a25d50714e9d1956691 Mon Sep 17 00:00:00 2001 From: Azhwani <13301425+azhwani@users.noreply.github.com> Date: Sun, 20 Mar 2022 15:19:29 +0100 Subject: [PATCH 38/43] improve split string using pattern (#11945) --- .../split/SplitStringEveryNthChar.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/core-java-modules/core-java-string-operations-4/src/main/java/com/baeldung/split/SplitStringEveryNthChar.java b/core-java-modules/core-java-string-operations-4/src/main/java/com/baeldung/split/SplitStringEveryNthChar.java index 3ac31d012a..0687926cd2 100644 --- a/core-java-modules/core-java-string-operations-4/src/main/java/com/baeldung/split/SplitStringEveryNthChar.java +++ b/core-java-modules/core-java-string-operations-4/src/main/java/com/baeldung/split/SplitStringEveryNthChar.java @@ -3,8 +3,9 @@ package com.baeldung.split; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.regex.Matcher; +import java.util.regex.MatchResult; import java.util.regex.Pattern; +import java.util.stream.Collectors; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; @@ -29,16 +30,11 @@ public class SplitStringEveryNthChar { } public static List usingPattern(String text, int n) { - List results = new ArrayList<>(); - - Pattern pattern = Pattern.compile(".{1," + n + "}"); - Matcher matcher = pattern.matcher(text); - while (matcher.find()) { - String match = text.substring(matcher.start(), matcher.end()); - results.add(match); - } - - return results; + return Pattern.compile(".{1," + n + "}") + .matcher(text) + .results() + .map(MatchResult::group) + .collect(Collectors.toList()); } public static List usingGuava(String text, int n) { From 79857f04ae7e40341b89488989b1a80dfc143cc9 Mon Sep 17 00:00:00 2001 From: Attila Uhrin Date: Mon, 21 Mar 2022 17:43:35 +0100 Subject: [PATCH 39/43] Fix integration tests. --- .../main/java/com/baeldung/mongodb/dbref/DbRefApplication.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java index b358b3b974..a9101b36a0 100644 --- a/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java +++ b/persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/mongodb/dbref/DbRefApplication.java @@ -2,8 +2,10 @@ package com.baeldung.mongodb.dbref; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; @SpringBootApplication +@EnableMongoRepositories(basePackages = { "com.baeldung" }) public class DbRefApplication { public static void main(String... args) { From f7420526f4a2f93f6d7405887f5d0cba52fee304 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Tue, 22 Mar 2022 10:01:46 +0100 Subject: [PATCH 40/43] JAVA-10236: Fix a typo --- .../java/com/baeldung/springnativeintro/SpringNativeApp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-native/src/main/java/com/baeldung/springnativeintro/SpringNativeApp.java b/spring-native/src/main/java/com/baeldung/springnativeintro/SpringNativeApp.java index fa54d34f9f..c2bbd8fa43 100644 --- a/spring-native/src/main/java/com/baeldung/springnativeintro/SpringNativeApp.java +++ b/spring-native/src/main/java/com/baeldung/springnativeintro/SpringNativeApp.java @@ -3,7 +3,7 @@ package com.baeldung.springnativeintro; public class SpringNativeApp { public static void main(String[] args) { - System.out.println("Hello, World! This is a Baledung Spring Native Application"); + System.out.println("Hello, World! This is a Baeldung Spring Native Application"); } } From 8f7a2b766251f41a94057ab8bf44f3da54df5a7b Mon Sep 17 00:00:00 2001 From: kwoyke Date: Tue, 22 Mar 2022 13:54:59 +0100 Subject: [PATCH 41/43] JAVA-9857: Remove overriden spring-boot.version property (#11956) --- persistence-modules/spring-data-jpa-filtering/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/persistence-modules/spring-data-jpa-filtering/pom.xml b/persistence-modules/spring-data-jpa-filtering/pom.xml index 9c10f4a997..287a3136fd 100644 --- a/persistence-modules/spring-data-jpa-filtering/pom.xml +++ b/persistence-modules/spring-data-jpa-filtering/pom.xml @@ -67,7 +67,6 @@ com.baeldung.boot.Application 1.10.6 42.2.5 - 2.6.1 \ No newline at end of file From 084b7f155725124feaebe0a9886ce41585b7dcca Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Tue, 22 Mar 2022 19:10:52 +0530 Subject: [PATCH 42/43] JAVA-10592 Updated Mockito Version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index daaf9db6d2..8d065849a2 100644 --- a/pom.xml +++ b/pom.xml @@ -1460,7 +1460,7 @@ 3.21.0 2.2 1.3 - 4.1.0 + 4.4.0 1.11.20 From 4ab85e1ccc37c27bcdb3bc365e3cf58ac3dc2c96 Mon Sep 17 00:00:00 2001 From: etrandafir93 <75391049+etrandafir93@users.noreply.github.com> Date: Tue, 22 Mar 2022 17:59:07 +0200 Subject: [PATCH 43/43] BAEL-5465: tests for subtracting days from date (#11954) * BAEL-5465: tests for subtracting days from date * BAEL-5465: upated readme --- .../core-java-date-operations-2/README.md | 1 + .../SubtractDaysFromDateUnitTest.java | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/subtractdays/SubtractDaysFromDateUnitTest.java diff --git a/core-java-modules/core-java-date-operations-2/README.md b/core-java-modules/core-java-date-operations-2/README.md index 557e4c3517..7c742a4f68 100644 --- a/core-java-modules/core-java-date-operations-2/README.md +++ b/core-java-modules/core-java-date-operations-2/README.md @@ -11,4 +11,5 @@ This module contains articles about date operations in Java. - [How to determine day of week by passing specific date in Java?](https://www.baeldung.com/java-get-day-of-week) - [Finding Leap Years in Java](https://www.baeldung.com/java-leap-year) - [Getting the Week Number From Any Date](https://www.baeldung.com/java-get-week-number) +- [Subtract Days from a Date in Java](https://www.baeldung.com/java-subtract-days-from-a-date) - [[<-- Prev]](/core-java-modules/core-java-date-operations-1) diff --git a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/subtractdays/SubtractDaysFromDateUnitTest.java b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/subtractdays/SubtractDaysFromDateUnitTest.java new file mode 100644 index 0000000000..3532712963 --- /dev/null +++ b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/subtractdays/SubtractDaysFromDateUnitTest.java @@ -0,0 +1,49 @@ +package com.baeldung.subtractdays; + +import static org.junit.Assert.assertEquals; + +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +import org.joda.time.DateTime; +import org.junit.Test; + +public class SubtractDaysFromDateUnitTest { + + @Test + public void givenCalendarDate_whenSubtractingFiveDays_dateIsChangedCorrectly() { + Calendar calendar = Calendar.getInstance(); + calendar.set(2022, Calendar.APRIL, 20); + + calendar.add(Calendar.DATE, -5); + + assertEquals(15, calendar.get(Calendar.DAY_OF_MONTH)); + assertEquals(Calendar.APRIL, calendar.get(Calendar.MONTH)); + assertEquals(2022, calendar.get(Calendar.YEAR)); + } + + @Test + public void givenJodaDateTime_whenSubtractingFiveDays_dateIsChangedCorrectly() { + DateTime dateTime = new DateTime(2022, 4, 20, 12, 0, 0); + + dateTime = dateTime.minusDays(5); + + assertEquals(15, dateTime.getDayOfMonth()); + assertEquals(4, dateTime.getMonthOfYear()); + assertEquals(2022, dateTime.getYear()); + } + + @Test + public void givenLocalDateTime_whenSubtractingFiveDays_dateIsChangedCorrectly() { + LocalDate localDateTime = LocalDate.of(2022, 4, 20); + + localDateTime = localDateTime.minusDays(5); + + assertEquals(15, localDateTime.getDayOfMonth()); + assertEquals(4, localDateTime.getMonthValue()); + assertEquals(2022, localDateTime.getYear()); + } +}