Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
WebfluxMongoDB
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Bhanuchander Pathuri
WebfluxMongoDB
Commits
8c5c9d79
Commit
8c5c9d79
authored
2 years ago
by
Bhanuchander Pathuri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
initial Commit
parent
d41cff0e
Changes
30
Show whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
1254 additions
and
0 deletions
+1254
-0
.gitignore
.gitignore
+33
-0
maven-wrapper.jar
.mvn/wrapper/maven-wrapper.jar
+0
-0
maven-wrapper.properties
.mvn/wrapper/maven-wrapper.properties
+2
-0
mvnw
mvnw
+316
-0
mvnw.cmd
mvnw.cmd
+188
-0
pom.xml
pom.xml
+63
-0
WebFluxApplication.java
src/main/java/com/nisum/poc/Webflux/WebFluxApplication.java
+20
-0
MongoDBConfiguration.java
...va/com/nisum/poc/Webflux/config/MongoDBConfiguration.java
+38
-0
WebFluxConfig.java
...main/java/com/nisum/poc/Webflux/config/WebFluxConfig.java
+11
-0
WebclientEx.java
src/main/java/com/nisum/poc/Webflux/config/WebclientEx.java
+17
-0
AddressController.java
...a/com/nisum/poc/Webflux/controller/AddressController.java
+32
-0
StudentController.java
...a/com/nisum/poc/Webflux/controller/StudentController.java
+80
-0
SubjectsController.java
.../com/nisum/poc/Webflux/controller/SubjectsController.java
+32
-0
Address.java
src/main/java/com/nisum/poc/Webflux/entity/Address.java
+28
-0
Student.java
src/main/java/com/nisum/poc/Webflux/entity/Student.java
+32
-0
Subject.java
src/main/java/com/nisum/poc/Webflux/entity/Subject.java
+29
-0
AddressPayload.java
...main/java/com/nisum/poc/Webflux/model/AddressPayload.java
+17
-0
StudentPayload.java
...main/java/com/nisum/poc/Webflux/model/StudentPayload.java
+24
-0
SubjectPayload.java
...main/java/com/nisum/poc/Webflux/model/SubjectPayload.java
+16
-0
AddressRepository.java
...a/com/nisum/poc/Webflux/repository/AddressRepository.java
+12
-0
StudentRepository.java
...a/com/nisum/poc/Webflux/repository/StudentRepository.java
+9
-0
SubjectRepository.java
...a/com/nisum/poc/Webflux/repository/SubjectRepository.java
+13
-0
IAddressService.java
...n/java/com/nisum/poc/Webflux/service/IAddressService.java
+14
-0
IStudentService.java
...n/java/com/nisum/poc/Webflux/service/IStudentService.java
+21
-0
ISubjectsService.java
.../java/com/nisum/poc/Webflux/service/ISubjectsService.java
+14
-0
AddressServiceImpl.java
...om/nisum/poc/Webflux/service/impl/AddressServiceImpl.java
+28
-0
StudentServiceImpl.java
...om/nisum/poc/Webflux/service/impl/StudentServiceImpl.java
+121
-0
SubjectsServiceImpl.java
...m/nisum/poc/Webflux/service/impl/SubjectsServiceImpl.java
+28
-0
application.properties
src/main/resources/application.properties
+3
-0
WebfluxApplicationTests.java
...t/java/com/nisum/poc/Webflux/WebfluxApplicationTests.java
+13
-0
No files found.
.gitignore
0 → 100644
View file @
8c5c9d79
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/
### VS Code ###
.vscode/
This diff is collapsed.
Click to expand it.
.mvn/wrapper/maven-wrapper.jar
0 → 100644
View file @
8c5c9d79
File added
This diff is collapsed.
Click to expand it.
.mvn/wrapper/maven-wrapper.properties
0 → 100644
View file @
8c5c9d79
distributionUrl
=
https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip
wrapperUrl
=
https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar
This diff is collapsed.
Click to expand it.
mvnw
0 → 100644
View file @
8c5c9d79
#!/bin/sh
# ----------------------------------------------------------------------------
# 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
#
# https://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.
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
# JAVA_HOME - location of a JDK home dir
#
# Optional ENV vars
# -----------------
# M2_HOME - location of maven2's installed home dir
# MAVEN_OPTS - parameters passed to the Java VM when running Maven
# e.g. to debug Maven itself, use
# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
# ----------------------------------------------------------------------------
if
[
-z
"
$MAVEN_SKIP_RC
"
]
;
then
if
[
-f
/usr/local/etc/mavenrc
]
;
then
.
/usr/local/etc/mavenrc
fi
if
[
-f
/etc/mavenrc
]
;
then
.
/etc/mavenrc
fi
if
[
-f
"
$HOME
/.mavenrc"
]
;
then
.
"
$HOME
/.mavenrc"
fi
fi
# OS specific support. $var _must_ be set to either true or false.
cygwin
=
false
;
darwin
=
false
;
mingw
=
false
case
"
`
uname
`
"
in
CYGWIN
*
)
cygwin
=
true
;;
MINGW
*
)
mingw
=
true
;;
Darwin
*
)
darwin
=
true
# Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
# See https://developer.apple.com/library/mac/qa/qa1170/_index.html
if
[
-z
"
$JAVA_HOME
"
]
;
then
if
[
-x
"/usr/libexec/java_home"
]
;
then
export
JAVA_HOME
=
"
`
/usr/libexec/java_home
`
"
else
export
JAVA_HOME
=
"/Library/Java/Home"
fi
fi
;;
esac
if
[
-z
"
$JAVA_HOME
"
]
;
then
if
[
-r
/etc/gentoo-release
]
;
then
JAVA_HOME
=
`
java-config
--jre-home
`
fi
fi
if
[
-z
"
$M2_HOME
"
]
;
then
## resolve links - $0 may be a link to maven's home
PRG
=
"
$0
"
# need this for relative symlinks
while
[
-h
"
$PRG
"
]
;
do
ls
=
`
ls
-ld
"
$PRG
"
`
link
=
`
expr
"
$ls
"
:
'.*-> \(.*\)$'
`
if
expr
"
$link
"
:
'/.*'
>
/dev/null
;
then
PRG
=
"
$link
"
else
PRG
=
"
`
dirname
"
$PRG
"
`
/
$link
"
fi
done
saveddir
=
`
pwd
`
M2_HOME
=
`
dirname
"
$PRG
"
`
/..
# make it fully qualified
M2_HOME
=
`
cd
"
$M2_HOME
"
&&
pwd
`
cd
"
$saveddir
"
# echo Using m2 at $M2_HOME
fi
# For Cygwin, ensure paths are in UNIX format before anything is touched
if
$cygwin
;
then
[
-n
"
$M2_HOME
"
]
&&
M2_HOME
=
`
cygpath
--unix
"
$M2_HOME
"
`
[
-n
"
$JAVA_HOME
"
]
&&
JAVA_HOME
=
`
cygpath
--unix
"
$JAVA_HOME
"
`
[
-n
"
$CLASSPATH
"
]
&&
CLASSPATH
=
`
cygpath
--path
--unix
"
$CLASSPATH
"
`
fi
# For Mingw, ensure paths are in UNIX format before anything is touched
if
$mingw
;
then
[
-n
"
$M2_HOME
"
]
&&
M2_HOME
=
"
`
(
cd
"
$M2_HOME
"
;
pwd
)
`
"
[
-n
"
$JAVA_HOME
"
]
&&
JAVA_HOME
=
"
`
(
cd
"
$JAVA_HOME
"
;
pwd
)
`
"
fi
if
[
-z
"
$JAVA_HOME
"
]
;
then
javaExecutable
=
"
`
which javac
`
"
if
[
-n
"
$javaExecutable
"
]
&&
!
[
"
`
expr
\"
$javaExecutable
\"
:
'\([^ ]*\)'
`
"
=
"no"
]
;
then
# readlink(1) is not available as standard on Solaris 10.
readLink
=
`
which
readlink
`
if
[
!
`
expr
"
$readLink
"
:
'\([^ ]*\)'
`
=
"no"
]
;
then
if
$darwin
;
then
javaHome
=
"
`
dirname
\"
$javaExecutable
\"
`
"
javaExecutable
=
"
`
cd
\"
$javaHome
\"
&&
pwd
-P
`
/javac"
else
javaExecutable
=
"
`
readlink
-f
\"
$javaExecutable
\"
`
"
fi
javaHome
=
"
`
dirname
\"
$javaExecutable
\"
`
"
javaHome
=
`
expr
"
$javaHome
"
:
'\(.*\)/bin'
`
JAVA_HOME
=
"
$javaHome
"
export
JAVA_HOME
fi
fi
fi
if
[
-z
"
$JAVACMD
"
]
;
then
if
[
-n
"
$JAVA_HOME
"
]
;
then
if
[
-x
"
$JAVA_HOME
/jre/sh/java"
]
;
then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD
=
"
$JAVA_HOME
/jre/sh/java"
else
JAVACMD
=
"
$JAVA_HOME
/bin/java"
fi
else
JAVACMD
=
"
`
\\
unset
-f
command
;
\\
command
-v
java
`
"
fi
fi
if
[
!
-x
"
$JAVACMD
"
]
;
then
echo
"Error: JAVA_HOME is not defined correctly."
>
&2
echo
" We cannot execute
$JAVACMD
"
>
&2
exit
1
fi
if
[
-z
"
$JAVA_HOME
"
]
;
then
echo
"Warning: JAVA_HOME environment variable is not set."
fi
CLASSWORLDS_LAUNCHER
=
org.codehaus.plexus.classworlds.launcher.Launcher
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir
()
{
if
[
-z
"
$1
"
]
then
echo
"Path not specified to find_maven_basedir"
return
1
fi
basedir
=
"
$1
"
wdir
=
"
$1
"
while
[
"
$wdir
"
!=
'/'
]
;
do
if
[
-d
"
$wdir
"
/.mvn
]
;
then
basedir
=
$wdir
break
fi
# workaround for JBEAP-8937 (on Solaris 10/Sparc)
if
[
-d
"
${
wdir
}
"
]
;
then
wdir
=
`
cd
"
$wdir
/.."
;
pwd
`
fi
# end of workaround
done
echo
"
${
basedir
}
"
}
# concatenates all lines of a file
concat_lines
()
{
if
[
-f
"
$1
"
]
;
then
echo
"
$(
tr
-s
'\n'
' '
<
"
$1
"
)
"
fi
}
BASE_DIR
=
`
find_maven_basedir
"
$(
pwd
)
"
`
if
[
-z
"
$BASE_DIR
"
]
;
then
exit
1
;
fi
##########################################################################################
# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
# This allows using the maven wrapper in projects that prohibit checking in binary data.
##########################################################################################
if
[
-r
"
$BASE_DIR
/.mvn/wrapper/maven-wrapper.jar"
]
;
then
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
"Found .mvn/wrapper/maven-wrapper.jar"
fi
else
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
"Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
fi
if
[
-n
"
$MVNW_REPOURL
"
]
;
then
jarUrl
=
"
$MVNW_REPOURL
/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
else
jarUrl
=
"https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
fi
while
IFS
=
"="
read
key value
;
do
case
"
$key
"
in
(
wrapperUrl
)
jarUrl
=
"
$value
"
;
break
;;
esac
done
<
"
$BASE_DIR
/.mvn/wrapper/maven-wrapper.properties"
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
"Downloading from:
$jarUrl
"
fi
wrapperJarPath
=
"
$BASE_DIR
/.mvn/wrapper/maven-wrapper.jar"
if
$cygwin
;
then
wrapperJarPath
=
`
cygpath
--path
--windows
"
$wrapperJarPath
"
`
fi
if
command
-v
wget
>
/dev/null
;
then
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
"Found wget ... using wget"
fi
if
[
-z
"
$MVNW_USERNAME
"
]
||
[
-z
"
$MVNW_PASSWORD
"
]
;
then
wget
"
$jarUrl
"
-O
"
$wrapperJarPath
"
||
rm
-f
"
$wrapperJarPath
"
else
wget
--http-user
=
$MVNW_USERNAME
--http-password
=
$MVNW_PASSWORD
"
$jarUrl
"
-O
"
$wrapperJarPath
"
||
rm
-f
"
$wrapperJarPath
"
fi
elif
command
-v
curl
>
/dev/null
;
then
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
"Found curl ... using curl"
fi
if
[
-z
"
$MVNW_USERNAME
"
]
||
[
-z
"
$MVNW_PASSWORD
"
]
;
then
curl
-o
"
$wrapperJarPath
"
"
$jarUrl
"
-f
else
curl
--user
$MVNW_USERNAME
:
$MVNW_PASSWORD
-o
"
$wrapperJarPath
"
"
$jarUrl
"
-f
fi
else
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
"Falling back to using Java to download"
fi
javaClass
=
"
$BASE_DIR
/.mvn/wrapper/MavenWrapperDownloader.java"
# For Cygwin, switch paths to Windows format before running javac
if
$cygwin
;
then
javaClass
=
`
cygpath
--path
--windows
"
$javaClass
"
`
fi
if
[
-e
"
$javaClass
"
]
;
then
if
[
!
-e
"
$BASE_DIR
/.mvn/wrapper/MavenWrapperDownloader.class"
]
;
then
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
" - Compiling MavenWrapperDownloader.java ..."
fi
# Compiling the Java class
(
"
$JAVA_HOME
/bin/javac"
"
$javaClass
"
)
fi
if
[
-e
"
$BASE_DIR
/.mvn/wrapper/MavenWrapperDownloader.class"
]
;
then
# Running the downloader
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
" - Running MavenWrapperDownloader.java ..."
fi
(
"
$JAVA_HOME
/bin/java"
-cp
.mvn/wrapper MavenWrapperDownloader
"
$MAVEN_PROJECTBASEDIR
"
)
fi
fi
fi
fi
##########################################################################################
# End of extension
##########################################################################################
export
MAVEN_PROJECTBASEDIR
=
${
MAVEN_BASEDIR
:-
"
$BASE_DIR
"
}
if
[
"
$MVNW_VERBOSE
"
=
true
]
;
then
echo
$MAVEN_PROJECTBASEDIR
fi
MAVEN_OPTS
=
"
$(
concat_lines
"
$MAVEN_PROJECTBASEDIR
/.mvn/jvm.config"
)
$MAVEN_OPTS
"
# For Cygwin, switch paths to Windows format before running java
if
$cygwin
;
then
[
-n
"
$M2_HOME
"
]
&&
M2_HOME
=
`
cygpath
--path
--windows
"
$M2_HOME
"
`
[
-n
"
$JAVA_HOME
"
]
&&
JAVA_HOME
=
`
cygpath
--path
--windows
"
$JAVA_HOME
"
`
[
-n
"
$CLASSPATH
"
]
&&
CLASSPATH
=
`
cygpath
--path
--windows
"
$CLASSPATH
"
`
[
-n
"
$MAVEN_PROJECTBASEDIR
"
]
&&
MAVEN_PROJECTBASEDIR
=
`
cygpath
--path
--windows
"
$MAVEN_PROJECTBASEDIR
"
`
fi
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS
=
"
$MAVEN_CONFIG
$@
"
export
MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER
=
org.apache.maven.wrapper.MavenWrapperMain
exec
"
$JAVACMD
"
\
$MAVEN_OPTS
\
$MAVEN_DEBUG_OPTS
\
-classpath
"
$MAVEN_PROJECTBASEDIR
/.mvn/wrapper/maven-wrapper.jar"
\
"-Dmaven.home=
${
M2_HOME
}
"
\
"-Dmaven.multiModuleProjectDirectory=
${
MAVEN_PROJECTBASEDIR
}
"
\
${
WRAPPER_LAUNCHER
}
$MAVEN_CONFIG
"
$@
"
This diff is collapsed.
Click to expand it.
mvnw.cmd
0 → 100644
View file @
8c5c9d79
@REM ----------------------------------------------------------------------------
@REM Licensed to the Apache Software Foundation (ASF) under one
@REM or more contributor license agreements. See the NOTICE file
@REM distributed with this work for additional information
@REM regarding copyright ownership. The ASF licenses this file
@REM to you under the Apache License, Version 2.0 (the
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
@REM https://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@REM KIND, either express or implied. See the License for the
@REM specific language governing permissions and limitations
@REM under the License.
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@REM
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
@REM ----------------------------------------------------------------------------
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
@REM set title of command window
title %0
@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
@REM Execute a user defined script before this one
if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
@REM check for pre script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
:skipRcPre
@setlocal
set ERROR_CODE=0
@REM To isolate internal variables from possible post scripts, we use another setlocal
@setlocal
@REM ==== START VALIDATION ====
if not "%JAVA_HOME%" == "" goto OkJHome
echo.
echo Error: JAVA_HOME not found in your environment. >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
:OkJHome
if exist "%JAVA_HOME%\bin\java.exe" goto init
echo.
echo Error: JAVA_HOME is set to an invalid directory. >&2
echo JAVA_HOME = "%JAVA_HOME%" >&2
echo Please set the JAVA_HOME variable in your environment to match the >&2
echo location of your Java installation. >&2
echo.
goto error
@REM ==== END VALIDATION ====
:init
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
set EXEC_DIR=%CD%
set WDIR=%EXEC_DIR%
:findBaseDir
IF EXIST "%WDIR%"\.mvn goto baseDirFound
cd ..
IF "%WDIR%"=="%CD%" goto baseDirNotFound
set WDIR=%CD%
goto findBaseDir
:baseDirFound
set MAVEN_PROJECTBASEDIR=%WDIR%
cd "%EXEC_DIR%"
goto endDetectBaseDir
:baseDirNotFound
set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
cd "%EXEC_DIR%"
:endDetectBaseDir
IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
@setlocal EnableExtensions EnableDelayedExpansion
for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
)
@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
if exist %WRAPPER_JAR% (
if "%MVNW_VERBOSE%" == "true" (
echo Found %WRAPPER_JAR%
)
) else (
if not "%MVNW_REPOURL%" == "" (
SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
)
if "%MVNW_VERBOSE%" == "true" (
echo Couldn't find %WRAPPER_JAR%, downloading it ...
echo Downloading from: %DOWNLOAD_URL%
)
powershell -Command "&{"^
"$webclient = new-object System.Net.WebClient;"^
"if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
"$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
"}"^
"[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
"}"
if "%MVNW_VERBOSE%" == "true" (
echo Finished downloading %WRAPPER_JAR%
)
)
@REM End of extension
@REM Provide a "standardized" way to retrieve the CLI args that will
@REM work with both Windows and non-Windows executions.
set MAVEN_CMD_LINE_ARGS=%*
%MAVEN_JAVA_EXE% ^
%JVM_CONFIG_MAVEN_PROPS% ^
%MAVEN_OPTS% ^
%MAVEN_DEBUG_OPTS% ^
-classpath %WRAPPER_JAR% ^
"-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
%WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
:error
set ERROR_CODE=1
:end
@endlocal & set ERROR_CODE=%ERROR_CODE%
if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
@REM check for post script, once with legacy .bat ending and once with .cmd ending
if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
:skipRcPost
@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
if "%MAVEN_BATCH_PAUSE%"=="on" pause
if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
cmd /C exit /B %ERROR_CODE%
This diff is collapsed.
Click to expand it.
pom.xml
0 → 100644
View file @
8c5c9d79
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
3.0.1
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<groupId>
com.nisum.poc
</groupId>
<artifactId>
Webflux
</artifactId>
<version>
0.0.1-SNAPSHOT
</version>
<name>
Webflux
</name>
<description>
Demo project for Spring Boot webFlux
</description>
<properties>
<java.version>
17
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-mongodb-reactive
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-webflux
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
io.projectreactor
</groupId>
<artifactId>
reactor-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/WebFluxApplication.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.domain.EntityScan
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories
;
import
org.springframework.stereotype.Component
;
@SpringBootApplication
@ComponentScan
(
basePackages
=
"com.nisum"
)
@EntityScan
(
"com.nisum.poc"
)
//@EnableReactiveMongoRepositories(basePackages = "com.nisum.poc")
public
class
WebFluxApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
WebFluxApplication
.
class
,
args
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/config/MongoDBConfiguration.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
config
;
import
com.mongodb.reactivestreams.client.MongoClient
;
import
com.mongodb.reactivestreams.client.MongoClients
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration
;
import
org.springframework.data.mongodb.core.ReactiveMongoTemplate
;
import
org.springframework.data.mongodb.repository.config.EnableMongoRepositories
;
import
org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories
;
@Configuration
@EnableReactiveMongoRepositories
(
basePackages
=
"com.nisum"
)
public
class
MongoDBConfiguration
extends
AbstractReactiveMongoConfiguration
{
@Value
(
"${db.name}"
)
private
String
dbname
;
@Value
(
"${db.host}"
)
private
String
dbHost
;
@Override
public
MongoClient
reactiveMongoClient
()
{
return
MongoClients
.
create
();
}
@Override
protected
String
getDatabaseName
()
{
return
dbname
;
}
@Bean
public
ReactiveMongoTemplate
reactiveMongoTemplate
(){
return
new
ReactiveMongoTemplate
(
reactiveMongoClient
(),
getDatabaseName
());
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/config/WebFluxConfig.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
config
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.reactive.config.EnableWebFlux
;
import
org.springframework.web.reactive.config.WebFluxConfigurer
;
@Configuration
@EnableWebFlux
public
class
WebFluxConfig
implements
WebFluxConfigurer
{
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/config/WebclientEx.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
config
;
import
com.nisum.poc.Webflux.entity.Student
;
import
io.netty.handler.codec.http.websocketx.extensions.compression.WebSocketClientCompressionHandler
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.MediaType
;
import
org.springframework.web.reactive.function.client.WebClient
;
import
reactor.core.publisher.Flux
;
@Configuration
public
class
WebclientEx
{
WebClient
client
=
WebClient
.
create
(
"http://localhost:4042"
);
public
Flux
<
Student
>
getAllStudents
(){
return
client
.
get
().
uri
(
"/allStudents"
).
accept
(
MediaType
.
APPLICATION_JSON
).
retrieve
().
bodyToFlux
(
Student
.
class
);
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/controller/AddressController.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
controller
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.model.AddressPayload
;
import
com.nisum.poc.Webflux.service.IAddressService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@RestController
public
class
AddressController
{
@Autowired
IAddressService
addressService
;
@PostMapping
(
"/saveaddress"
)
public
Mono
<
Address
>
createAddress
(
@RequestBody
Address
address
){
return
addressService
.
createAddress
(
address
);
}
@GetMapping
(
"/alladdress"
)
public
Flux
<
Address
>
getAllAddress
(){
return
addressService
.
getAllAddress
();
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/controller/StudentController.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
controller
;
import
com.nisum.poc.Webflux.entity.Student
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
com.nisum.poc.Webflux.model.StudentPayload
;
import
com.nisum.poc.Webflux.service.IStudentService
;
import
com.nisum.poc.Webflux.service.ISubjectsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
java.time.Duration
;
import
java.util.Arrays
;
import
java.util.List
;
@RestController
public
class
StudentController
{
@Autowired
IStudentService
studentService
;
@PostMapping
(
"/saveStudent"
)
public
Mono
<
Student
>
creatStudent
(
@RequestBody
Student
student
){
return
studentService
.
createStudent
(
student
);
}
@GetMapping
(
"/allStudents"
)
public
Flux
<
StudentPayload
>
getAllStudents
(){
return
studentService
.
getAllStudents
();
}
@GetMapping
(
"/concatEx"
)
public
Flux
<
String
>
concatFlux
(){
return
studentService
.
concat
();
}
@GetMapping
(
"/mergeEx"
)
public
Flux
<
String
>
mergeFlux
(){
return
studentService
.
merge
().
log
();
}
@GetMapping
(
"/zipEx"
)
public
Flux
<
Integer
>
zip
(){
return
studentService
.
combineWithZip
();
}
@GetMapping
(
"/zipWithEx"
)
public
Flux
<
Integer
>
zipWith
(){
Flux
<
Integer
>
evenNumbers
=
Flux
.
range
(
1
,
5
)
.
filter
(
x
->
x
%
2
==
0
);
// i.e. 2, 4
Flux
<
Integer
>
oddNumbers
=
Flux
.
range
(
1
,
5
)
.
filter
(
x
->
x
%
2
>
0
);
//1,3,5
Flux
<
Integer
>
concatIntegers
=
Flux
.
concat
(
evenNumbers
,
oddNumbers
);
Flux
<
Integer
>
mergefIntegers
=
Flux
.
merge
(
evenNumbers
,
oddNumbers
);
Flux
<
Integer
>
zipIntegers
=
Flux
.
zip
(
evenNumbers
,
oddNumbers
,(
a
,
b
)->
a
*
b
).
log
();
//flux to mono last(),next(),elementAt(1), haselements() haselement(1),
Mono
<
Integer
>
integerMono
=
oddNumbers
.
next
();
Flux
<
Integer
>
zipwithIntegers
=
evenNumbers
.
zipWith
(
oddNumbers
,(
a
,
b
)->
a
*
b
);
//2,12
return
zipwithIntegers
;
}
@GetMapping
(
"/flatMap"
)
public
Flux
<
String
>
transformUsingFlatMap
()
{
List
<
String
>
names
=
Arrays
.
asList
(
"google "
,
"abc"
,
"fb"
,
" stackoverflow"
,
" bhanuchander"
,
" reddy"
);
Flux
<
String
>
namess
=
Flux
.
fromIterable
(
names
).
filter
(
name
->
name
.
length
()
>=
5
).
flatMap
(
name
->
{
return
Flux
.
just
(
name
.
toUpperCase
()).
delayElements
(
Duration
.
ofMillis
(
151
)).
log
();
});
return
namess
;
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/controller/SubjectsController.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
controller
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
com.nisum.poc.Webflux.service.ISubjectsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@RestController
public
class
SubjectsController
{
@Autowired
ISubjectsService
subjectsService
;
@PostMapping
(
"/savesubject"
)
public
Mono
<
Subject
>
creatSubject
(
@RequestBody
Subject
subject
){
return
subjectsService
.
createSuject
(
subject
);
}
@GetMapping
(
"/allsubjects"
)
public
Flux
<
Subject
>
getAllSubjects
(){
return
subjectsService
.
getAllSubjects
();
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/entity/Address.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
entity
;
import
lombok.*
;
import
org.springframework.context.annotation.Scope
;
import
org.springframework.context.annotation.ScopedProxyMode
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.mongodb.core.mapping.Document
;
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
@Document
@Builder
//@Scope(scopeName="request",proxyMode = ScopedProxyMode.TARGET_CLASS)
public
class
Address
{
@Transient
public
static
final
String
SEQUENCE_NAME
=
"users_sequence"
;
@Id
private
Long
id
;
private
String
address
;
private
String
city
;
private
String
pinCode
;
private
String
addressType
;
private
Long
studentId
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/entity/Student.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
entity
;
import
lombok.*
;
import
org.springframework.context.annotation.Scope
;
import
org.springframework.context.annotation.ScopedProxyMode
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.List
;
@Document
@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
@Builder
//@Scope(scopeName="request",proxyMode = ScopedProxyMode.TARGET_CLASS)
public
class
Student
{
@Transient
public
static
final
String
SEQUENCE_NAME
=
"users_sequence"
;
@Id
private
Long
id
;
private
String
firstName
;
private
String
lastName
;
private
Integer
age
;
private
List
<
String
>
phoneNumbers
;
private
List
<
Address
>
address
;
private
List
<
Subject
>
subjects
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/entity/Subject.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.context.annotation.Scope
;
import
org.springframework.context.annotation.ScopedProxyMode
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Transient
;
import
org.springframework.data.mongodb.core.mapping.Document
;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Document
@Builder
//@Scope(scopeName="request",proxyMode = ScopedProxyMode.TARGET_CLASS)
public
class
Subject
{
@Transient
public
static
final
String
SEQUENCE_NAME
=
"users_sequence"
;
@Id
private
Long
id
;
private
String
subjectName
;
private
Long
studentId
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/model/AddressPayload.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
AddressPayload
{
private
Integer
id
;
private
String
address
;
private
String
city
;
private
String
pinCode
;
private
String
addressType
;
private
Long
studentId
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/model/StudentPayload.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
model
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
org.springframework.data.mongodb.core.aggregation.ArrayOperators
;
import
java.util.List
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
StudentPayload
{
private
Long
id
;
private
String
firstName
;
private
String
lastName
;
private
Integer
age
;
private
List
<
String
>
phoneNumbers
;
private
List
<
Address
>
addresses
;
private
List
<
Subject
>
subjects
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/model/SubjectPayload.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
model
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
SubjectPayload
{
private
Integer
id
;
private
String
subjectName
;
private
Long
studentId
;
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/repository/AddressRepository.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
repository
;
import
com.nisum.poc.Webflux.entity.Address
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
org.springframework.stereotype.Repository
;
import
reactor.core.publisher.Flux
;
@Repository
public
interface
AddressRepository
extends
ReactiveMongoRepository
<
Address
,
Long
>
{
Flux
<
Address
>
findByStudentId
(
Long
studentId
);
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/repository/StudentRepository.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
repository
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
com.nisum.poc.Webflux.entity.Student
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
StudentRepository
extends
ReactiveMongoRepository
<
Student
,
Long
>
{
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/repository/SubjectRepository.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
repository
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
org.springframework.data.mongodb.repository.ReactiveMongoRepository
;
import
org.springframework.stereotype.Repository
;
import
reactor.core.publisher.Flux
;
@Repository
public
interface
SubjectRepository
extends
ReactiveMongoRepository
<
Subject
,
Long
>
{
Flux
<
Subject
>
findByStudentId
(
Long
subjectId
);
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/service/IAddressService.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
service
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.model.AddressPayload
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Service
public
interface
IAddressService
{
Mono
<
Address
>
createAddress
(
Address
address
);
Flux
<
Address
>
getAllAddress
();
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/service/IStudentService.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
service
;
import
com.nisum.poc.Webflux.entity.Student
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
com.nisum.poc.Webflux.model.StudentPayload
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Service
public
interface
IStudentService
{
Mono
<
Student
>
createStudent
(
Student
student
);
Flux
<
StudentPayload
>
getAllStudents
();
Flux
<
String
>
concat
();
Flux
<
String
>
merge
();
public
Flux
<
Integer
>
combineWithZip
();
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/service/ISubjectsService.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
service
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Service
public
interface
ISubjectsService
{
Mono
<
Subject
>
createSuject
(
Subject
subject
);
Flux
<
Subject
>
getAllSubjects
();
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/service/impl/AddressServiceImpl.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
service
.
impl
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.repository.AddressRepository
;
import
com.nisum.poc.Webflux.service.IAddressService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Service
@Slf4j
public
class
AddressServiceImpl
implements
IAddressService
{
@Autowired
AddressRepository
addressRepository
;
@Override
public
Mono
<
Address
>
createAddress
(
Address
address
)
{
return
addressRepository
.
save
(
address
);
}
@Override
public
Flux
<
Address
>
getAllAddress
()
{
return
addressRepository
.
findAll
();
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/service/impl/StudentServiceImpl.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
service
.
impl
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.entity.Student
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
com.nisum.poc.Webflux.model.StudentPayload
;
import
com.nisum.poc.Webflux.repository.AddressRepository
;
import
com.nisum.poc.Webflux.repository.StudentRepository
;
import
com.nisum.poc.Webflux.repository.SubjectRepository
;
import
com.nisum.poc.Webflux.service.IStudentService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
import
reactor.util.function.Tuple2
;
import
java.util.ArrayList
;
import
java.util.List
;
@Service
@Slf4j
public
class
StudentServiceImpl
implements
IStudentService
{
@Autowired
StudentRepository
studentRepository
;
@Autowired
AddressRepository
addressRepository
;
@Autowired
SubjectRepository
subjectRepository
;
@Override
public
Mono
<
Student
>
createStudent
(
Student
student
)
{
Student
student1
=
new
Student
();
student1
.
setId
(
student
.
getId
());
student1
.
setAge
(
student
.
getAge
());
student1
.
setFirstName
(
student
.
getFirstName
());
student1
.
setLastName
(
student
.
getLastName
());
student1
.
setPhoneNumbers
(
student
.
getPhoneNumbers
());
Mono
<
Student
>
studentMono
=
studentRepository
.
save
(
student1
);
List
<
Address
>
addressList
=
new
ArrayList
<>();
List
<
Subject
>
subjectList
=
new
ArrayList
<>();
studentMono
.
subscribe
(
studentmono
->
{
student
.
getAddress
().
forEach
(
address
->
{
Address
address1
=
new
Address
();
address1
.
setId
(
address
.
getId
());
address1
.
setAddress
(
address
.
getAddress
());
address1
.
setStudentId
(
studentmono
.
getId
());
address1
.
setCity
(
address
.
getCity
());
address1
.
setAddressType
(
address
.
getAddressType
());
address1
.
setPinCode
(
address
.
getPinCode
());
addressList
.
add
(
address1
);
});
student
.
getSubjects
().
forEach
(
sub
->
{
Subject
subject
=
new
Subject
();
subject
.
setId
(
sub
.
getId
());
subject
.
setSubjectName
(
sub
.
getSubjectName
());
subject
.
setStudentId
(
studentmono
.
getId
());
subjectList
.
add
(
subject
);
});
Flux
<
Address
>
addressFlux
=
addressRepository
.
saveAll
(
addressList
);
Flux
<
Subject
>
subjectFlux
=
subjectRepository
.
saveAll
(
subjectList
);
});
return
studentMono
;
}
@Override
public
Flux
<
StudentPayload
>
getAllStudents
()
{
return
studentRepository
.
findAll
().
flatMap
(
student
->
{
Flux
<
Address
>
addressFlux
=
addressRepository
.
findByStudentId
(
student
.
getId
()).
switchIfEmpty
(
Flux
.
just
(
new
Address
()));
Flux
<
Subject
>
subjectFlux
=
subjectRepository
.
findByStudentId
(
student
.
getId
()).
switchIfEmpty
(
Flux
.
just
(
new
Subject
()));
StudentPayload
studentPayload
=
new
StudentPayload
();
studentPayload
.
setId
(
student
.
getId
());
studentPayload
.
setAge
(
student
.
getAge
());
studentPayload
.
setPhoneNumbers
(
student
.
getPhoneNumbers
());
studentPayload
.
setFirstName
(
student
.
getFirstName
());
studentPayload
.
setLastName
(
student
.
getLastName
());
studentPayload
.
setAddresses
(
addressFlux
.
collectList
().
block
());
studentPayload
.
setSubjects
(
subjectFlux
.
collectList
().
block
());
Flux
<
StudentPayload
>
studentPayloadFlux
=
Flux
.
just
(
studentPayload
);
return
studentPayloadFlux
;
});
// return studentFlux;
}
public
Flux
<
String
>
concat
()
{
Flux
<
String
>
names1
=
Flux
.
just
(
"Hi "
,
" Hello "
,
"how "
);
Flux
<
String
>
names2
=
Flux
.
just
(
"are "
,
" you "
,
" Doing"
);
Flux
<
String
>
names
=
Flux
.
concat
(
names1
,
names2
).
log
();
return
names
;
}
public
Flux
<
String
>
merge
()
{
Flux
<
String
>
names1
=
Flux
.
just
(
"Hi "
,
" Hello "
,
"how "
);
Flux
<
String
>
names2
=
Flux
.
just
(
"are "
,
" you "
,
" Doing"
);
Flux
<
String
>
names
=
Flux
.
merge
(
names1
,
names2
).
log
();
return
names
;
}
public
Flux
<
Integer
>
combineWithZip
(){
Flux
<
Integer
>
name1
=
Flux
.
just
(
1
,
2
,
3
);
Flux
<
Integer
>
name2
=
Flux
.
just
(
4
,
5
,
6
);
Flux
<
Integer
>
name3
=
Flux
.
zip
(
name1
,
name2
,(
n1
,
n2
)->{
return
n1
*
n2
;
});
return
name3
;
}
public
Mono
<
String
>
combineWithZipChara
(){
Mono
<
String
>
name1
=
Mono
.
just
(
"Hi"
);
Mono
<
String
>
name2
=
Mono
.
just
(
"are"
);
Flux
<
String
>
name3
=
Mono
.
zip
(
name1
,
name2
).
flatMap
(
a
->{
a
.
getT1
().
toString
();
});
}
}
This diff is collapsed.
Click to expand it.
src/main/java/com/nisum/poc/Webflux/service/impl/SubjectsServiceImpl.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
.
service
.
impl
;
import
com.nisum.poc.Webflux.entity.Address
;
import
com.nisum.poc.Webflux.entity.Subject
;
import
com.nisum.poc.Webflux.repository.SubjectRepository
;
import
com.nisum.poc.Webflux.service.ISubjectsService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
reactor.core.publisher.Flux
;
import
reactor.core.publisher.Mono
;
@Service
@Slf4j
public
class
SubjectsServiceImpl
implements
ISubjectsService
{
@Autowired
SubjectRepository
subjectRepository
;
@Override
public
Mono
<
Subject
>
createSuject
(
Subject
subject
)
{
return
subjectRepository
.
save
(
subject
);
}
@Override
public
Flux
<
Subject
>
getAllSubjects
()
{
return
subjectRepository
.
findAll
();
}
}
This diff is collapsed.
Click to expand it.
src/main/resources/application.properties
0 → 100644
View file @
8c5c9d79
db.name
=
StudentDatabase
db.host
=
mongodb://localhost:27017
server.port
=
4042
This diff is collapsed.
Click to expand it.
src/test/java/com/nisum/poc/Webflux/WebfluxApplicationTests.java
0 → 100644
View file @
8c5c9d79
package
com
.
nisum
.
poc
.
Webflux
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.test.context.SpringBootTest
;
@SpringBootTest
class
WebfluxApplicationTests
{
@Test
void
contextLoads
()
{
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment