diff --git a/Courses/README.md b/Courses/README.md index f9292990..68c0c0e3 100644 --- a/Courses/README.md +++ b/Courses/README.md @@ -4,7 +4,7 @@ https://www.udemy.com/build-a-web-app-with-spring-boot-and-angular-2 -#### About this course +#### About (Updated) Step by Step guide on Angular 2 + Spring Boot + Hiberante + Token-based Security+Eclipse @@ -13,7 +13,7 @@ https://www.udemy.com/build-a-web-app-with-spring-boot-and-angular-2 https://www.udemy.com/learning-web-application-with-spring-5-and-angular-2 -#### About this course +#### About Learn how to make your own Web Application with Spring 5 and Angular 2 @@ -24,7 +24,7 @@ https://console.developers.google.com/apis/credentials?project=packt-lwa-spring- https://www.udemy.com/reactive-programming-with-spring-framework-5 -#### About this course +#### About Learn Functional Reactive Programming with Spring Framework 5! @@ -33,7 +33,7 @@ Learn Functional Reactive Programming with Spring Framework 5! https://www.udemy.com/building-an-e-commerce-store-using-java-spring-framework -#### About this course +#### About Hands-on experience with Spring MVC, Spring Data, Hibernate, JPA, Spring Security, Spring Webflow and more @@ -42,7 +42,7 @@ Hands-on experience with Spring MVC, Spring Data, Hibernate, JPA, Spring Securit https://www.udemy.com/application-development-with-spring-50-and-angular-6 -#### About this course +#### About Explore the power of Spring 5.0 with Java to create your own real-world and enterprise-level applications @@ -51,7 +51,7 @@ Explore the power of Spring 5.0 with Java to create your own real-world and ente https://www.udemy.com/build-an-online-bank-with-java-angular-2-spring-and-more -#### About this course +#### About Comprehensive guide on building online banking system with Frontend, Backend, Database, REST and more using latest Tech @@ -60,7 +60,7 @@ Comprehensive guide on building online banking system with Frontend, Backend, Da https://www.udemy.com/learn-microservices-with-spring-boot-and-spring-cloud -#### About this course +#### About A Hands-on Guide on Spring and Microservices @@ -69,7 +69,7 @@ A Hands-on Guide on Spring and Microservices https://www.udemy.com/data-structures-and-algorithms-bootcamp/ -#### About this course +#### About How to ace your Silicon Valley style coding interview @@ -84,7 +84,7 @@ http://www.mathcs.emory.edu/~cheung/Courses/171/Syllabus/9-BinTree/BST-delete2.h https://www.udemy.com/spring-hibernate-tutorial/ -#### About this course +#### About Spring 5: Learn Spring 5 Core, AOP, Spring MVC, Spring Security, Spring REST, Spring Boot 2, Thymeleaf, JPA & Hibernate @@ -105,7 +105,7 @@ https://www.mulesoft.com/tcat/tomcat-ssl https://www.udemy.com/course/spring-framework-5-beginner-to-guru/ -#### About this course +#### About Spring Framework 5: Learn Spring Framework 5, Spring Boot 2, Spring MVC, Spring Data JPA, Spring Data MongoDB, Hibernate @@ -152,7 +152,7 @@ https://github.com/springframeworkguru/spring5-mvc-rest/tree/swagger-ep-assn-rev https://www.udemy.com/course/java-spring-framework-masterclass/ -#### About this course +#### About Can't Find a good Spring Tutorial? Finally Understand Spring 5 With Spring Core, Spring MVC, Spring Boot 2 and more @@ -166,7 +166,7 @@ https://logback.qos.ch/manual/layouts.html#conversionWord https://www.udemy.com/how-to-connect-java-jdbc-to-mysql/ -#### About this course +#### About Learn how to connect to a MySQL database with Java JDBC @@ -175,7 +175,7 @@ Learn how to connect to a MySQL database with Java JDBC https://www.udemy.com/deploy-java-spring-apps-online/ -#### About this course +#### About Learn how to deploy your Java Spring Apps online to showcase your Spring Skills! (Live Internet Access) @@ -184,7 +184,7 @@ Learn how to deploy your Java Spring Apps online to showcase your Spring Skills! https://www.udemy.com/learn-rabbitmq-asynchronous-messaging-with-java-and-spring/ -#### About this course +#### About Learn how to develop Queues, Exchanges, Routings and Listeners with Rabbit MQ using Java and Spring! @@ -211,7 +211,7 @@ rabbitmqctl status https://www.baeldung.com/rest-with-spring-course -#### About this course +#### About From HTTP fundamentals to API Mastery @@ -220,7 +220,7 @@ From HTTP fundamentals to API Mastery https://www.udemy.com/java-streams/ -#### About this course +#### About Functional Programming with Java 8 @@ -229,7 +229,7 @@ Functional Programming with Java 8 https://www.udemy.com/java-multithreading/ -#### About this course +#### About Unveiling the mysteries of multithreading in Java. The ultimate Java multithreading course @@ -238,7 +238,7 @@ Unveiling the mysteries of multithreading in Java. The ultimate Java multithread https://www.udemy.com/java-multithreading-concurrency-performance-optimization/ -#### About this course +#### About Become an expert in Multithreading, Concurrency & Parallel programming in Java, with strong emphasis on high performance @@ -247,7 +247,7 @@ Become an expert in Multithreading, Concurrency & Parallel programming in Java, https://www.udemy.com/multithreading-and-parallel-computing-in-java/ -#### About this course +#### About Multithreading and Concurrent Programming, Parallel Computation and MapReduce in Java @@ -256,7 +256,7 @@ Multithreading and Concurrent Programming, Parallel Computation and MapReduce in https://www.udemy.com/efficient-java-multithreading-with-executors/ -#### About this course +#### About Learn how to use the modern Executors framework to do everything that you can do with the Threads API ... and more! @@ -265,7 +265,7 @@ Learn how to use the modern Executors framework to do everything that you can do https://www.udemy.com/java-application-performance-and-memory-management/ -#### About this course +#### About Learn how to tune the JVM and make good coding choices to ensure your applications perform optimally. @@ -274,7 +274,7 @@ Learn how to tune the JVM and make good coding choices to ensure your applicatio https://www.udemy.com/course/apache-kafka/ -#### About this course +#### About START HERE: Learn Apache Kafka 2.0 Ecosystem, Core Concepts, Real World Java Producers/Consumers & Big Data Architecture @@ -283,7 +283,7 @@ START HERE: Learn Apache Kafka 2.0 Ecosystem, Core Concepts, Real World Java Pro https://www.udemy.com/kafka-connect/ -#### About this course +#### About Kafka Connect - Learn How to Source Twitter Data, Store in Apache Kafka Topics & Sink in ElasticSearch and PostgreSQL @@ -292,7 +292,7 @@ Kafka Connect - Learn How to Source Twitter Data, Store in Apache Kafka Topics & https://www.udemy.com/confluent-schema-registry -#### About this course +#### About Kafka - Master Avro, the Confluent Schema Registry and Kafka REST Proxy. Build Avro Producers/Consumers, Evolve Schemas @@ -301,7 +301,7 @@ Kafka - Master Avro, the Confluent Schema Registry and Kafka REST Proxy. Build A https://www.udemy.com/kafka-cluster-setup/ -#### About this course +#### About Hands-On Training on ZooKeeper Quorum Setup, Kafka Cluster Setup and Administration in AWS. @@ -310,7 +310,7 @@ Hands-On Training on ZooKeeper Quorum Setup, Kafka Cluster Setup and Administrat https://www.udemy.com/kafka-streams/ -#### About this course +#### About Learn the Kafka Streams API with Hands-On Examples, Learn Exactly Once, Build and Deploy Apps with Java 8 @@ -319,7 +319,7 @@ Learn the Kafka Streams API with Hands-On Examples, Learn Exactly Once, Build an https://www.udemy.com/apache-kafka-security/ -#### About this course +#### About Hands-On Course - Kafka Security Setup in AWS with SSL Encryption & Authentication, SASL Kerberos, ACL in Zookeeper @@ -328,7 +328,7 @@ Hands-On Course - Kafka Security Setup in AWS with SSL Encryption & Authenticati https://www.udemy.com/course/kafka-monitoring-and-operations/ -#### About this course +#### About Kafka Monitoring Setup with Prometheus and Grafana, Kafka Operations and Kafka Cluster Upgrades Hands-On. Setup in AWS @@ -337,7 +337,7 @@ Kafka Monitoring Setup with Prometheus and Grafana, Kafka Operations and Kafka C https://www.udemy.com/kafka-ksql/ -#### About this course +#### About Use SQL on Apache Kafka with Confluent KSQL! Build an entire taxi booking application based on KSQL stream processing @@ -346,7 +346,7 @@ Use SQL on Apache Kafka with Confluent KSQL! Build an entire taxi booking applic https://www.udemy.com/course/hibernate-tutorial-advanced/ -#### About this course +#### About Learn Advanced Hibernate techniques for Mapping Sets, Lists, Embeddable, Enums and Inheritance @@ -355,7 +355,7 @@ Learn Advanced Hibernate techniques for Mapping Sets, Lists, Embeddable, Enums a https://www.udemy.com/course/build-angular-2-complete-e-comerce-app-java-spring-mysql/ -#### About this course +#### About A Comprehensive Project with Step-By-Step Guide on latest Angular 2 Ecosystem and Java Spring Framework Ecosystem @@ -364,7 +364,7 @@ A Comprehensive Project with Step-By-Step Guide on latest Angular 2 Ecosystem an https://www.udemy.com/course/testing-spring-boot-beginner-to-guru -#### About this course +#### About Become an Expert Testing Java and Spring Boot Applications using JUnit 5, Mockito, Spring Boot, and More! @@ -373,7 +373,7 @@ Become an Expert Testing Java and Spring Boot Applications using JUnit 5, Mockit https://www.udemy.com/course/learn-unit-testing-with-spring-boot -#### About this course +#### About Learn to write awesome Java JUnit unit tests with Spring Boot, Mockito, JsonAssert, Hamcrest & JsonPath in 40 easy steps @@ -382,8 +382,17 @@ Learn to write awesome Java JUnit unit tests with Spring Boot, Mockito, JsonAsse https://www.udemy.com/course/practical-test-driven-development-for-java-programmers -##### About this course +##### About A truly practical approach to the fundamentals of test driven development in Java, featuring JUnit and Mockito +## The Gradle Masterclass + +https://www.udemy.com/course/gradle-masterclass + +##### About + +Discover the most advanced Java Build tools on the Planet! + + diff --git a/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/build.gradle b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/build.gradle new file mode 100644 index 00000000..1fee221d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/build.gradle @@ -0,0 +1,99 @@ +defaultTasks 'doFinished' + +//logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" + + + +task doStartProcess { + doLast{ + logger.info "$name - Now starting the process - OK!" + } +} + +task doStep2{ + doLast{ + logger.info "$name - Performed OK!" + } +} + +task doSomethingInTheMiddle (dependsOn: ['doStartProcess', tasks.findAll { task -> task.name.startsWith('doStep2') } ]) { + doLast{ + logger.info "$name - Performed the middle step - OK!" + } +} + + +task doFinished (dependsOn: ['doSomethingInTheMiddle', 'doStep2']) { + doLast{ + logger.info "$name - Done - OK!" + } +} + +// logger.info ">>> $project.gradle.taskGraph.allTasks" + + +/* +project.gradle.taskGraph.whenReady { + logger.info ">>> $project.gradle.taskGraph.allTasks" +} +*/ + + +/* + +defaultTasks 'doFinished' + +//logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" + + + +task doStartProcess { + doLast{ + logger.info "$name - Now starting the process - OK!" + } +} + +task doStep2{ + doLast{ + logger.info "$name - Performed OK!" + } +} + +task doSomethingInTheMiddle (dependsOn: ['doStartProcess', tasks.findAll { task -> task.name.startsWith('doStep2') } ]) { + doLast{ + logger.info "$name - Performed the middle step - OK!" + } +} + + +task doFinished { + doLast{ + logger.info "$name - Done - OK! >>> with version=$version" + } +} + + + +//Conditional logic +if ( Math.random() < 0.5){ + doFinished.dependsOn doSomethingInTheMiddle, doStep2 +} + +project.gradle.taskGraph.whenReady {taskGraph -> + if (taskGraph.hasTask(doStep2)) { + project.version = '1.0' + } else { + project.version = '1.0-SNAPSHOT' + } +} + + project.gradle.taskGraph.beforeTask{task -> + logger.info "+++ Before task $task.name" + } + + project.gradle.taskGraph.afterTask{task -> + logger.info "+++ Finished task $task.name" + } + + +*/ \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..0c55476f --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 12:33:07 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradlew b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradlew.bat b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/settings.gradle b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/settings.gradle new file mode 100644 index 00000000..7c31cac1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnGraphScriptsExamples/settings.gradle @@ -0,0 +1,6 @@ +//println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" +println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ }" + +// logger.info ">>> settings.gradle: $settings.gradle.gradleVersion" +// logger.info ">>> settings.gradle: $settings.gradle.gradleHomeDir" +// logger.info ">>> settings.gradle: $settings.gradle.gradleUserHomeDir" diff --git a/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/build.gradle b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/build.gradle new file mode 100644 index 00000000..17dd4798 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/build.gradle @@ -0,0 +1,116 @@ +defaultTasks 'doFinished' + +//logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" +logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ " + + + +task doStartProcess { + doLast{ + logger.info "$name - Now starting the process - OK!" + } +} + +task doStep2{ + doLast{ + logger.info "$name - Performed OK!" + } +} + +task doSomethingInTheMiddle (dependsOn: ['doStartProcess', 'doStep2']) { + doLast{ + logger.info "$name - Performed the middle step - OK!" + } +} + + +task doFinished (dependsOn: ['doSomethingInTheMiddle', 'doStep2']) { + doLast{ + logger.info "$name - Done - OK!" + } +} + + +/* + +defaultTasks 'doFinished' + +logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" + + + +task doStartProcess { + doLast{ + logger.info "$name - Now starting the process - OK!" + } +} + +task doStep2{ + doLast{ + logger.info "$name - Performed OK!" + } +} + +task doSomethingInTheMiddle (dependsOn: ['doStartProcess', tasks.findAll { task -> task.name.startsWith('doStep2') } ]) { + doLast{ + logger.info "$name - Performed the middle step - OK!" + } +} + + +task doFinished (dependsOn: ['doSomethingInTheMiddle', 'doStep2']) { + doLast{ + logger.info "$name - Done - OK!" + } +} + + +logger.info ">>> ${ project.tasks.findAll { task -> task.name.startsWith('doStep2') } }" + +*/ + +/* + +//Add to dependency to existing Task + +defaultTasks 'doFinished' + +logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" + + +task doStartProcess { + doLast{ + logger.info "$name - Now starting the process - OK!" + } +} + +task doStep2 { + doLast{ + logger.info "$name - Performed OK!" + } +} + +task doSomethingInTheMiddle { + doLast{ + logger.info "$name - Performed the middle step - OK!" + } +} + + +task doFinished (dependsOn: 'doSomethingInTheMiddle'){ + doLast{ + logger.info "$name - Done - OK!" + } +} + + +logger.info "${ project.tasks.findAll { task -> task.name.startsWith('doStep2')} }" + + +//Conditional logic +if ( Math.random() < 0.5){ + doSomethingInTheMiddle.dependsOn doStartProcess, tasks.findAll { task -> task.name.startsWith('doStep2') } +} + + +*/ diff --git a/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..96cb3dfe --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 01:01:11 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradlew b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradlew.bat b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/settings.gradle b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/settings.gradle new file mode 100644 index 00000000..ec0e7549 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/DependsOnScriptsExamples/settings.gradle @@ -0,0 +1,6 @@ +//println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" +println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ " + +// logger.info ">>> settings.gradle: $settings.gradle.gradleVersion" +// logger.info ">>> settings.gradle: $settings.gradle.gradleHomeDir" +// logger.info ">>> settings.gradle: $settings.gradle.gradleUserHomeDir" diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/build.gradle b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/build.gradle new file mode 100644 index 00000000..604076a1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/build.gradle @@ -0,0 +1,25 @@ +//println ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" +println ">>> build.gradle --> This is executed during the configuration phase - timestamp @ " + + +// logger.info ">>> build.gradle: $project.gradle.gradleVersion" +// logger.info ">>> build.gradle: $project.gradle.gradleHomeDir" +// logger.info ">>> build.gradle: $project.gradle.gradleUserHomeDir" + +// logger.info ">>> build.gradle: $buildFile" + +// logger.info ">>> build.gradle: ${relativePath(buildFile)}" + + +/* +logger.info """ +****************************************************************************** +Welcome to Gradle $gradle.gradleVersion - http://www.gradle.org +Gradle home is set to: $gradle.gradleHomeDir +Gradle user directory is set to: $gradle.gradleUserHomeDir + +Base directory: $projectDir +Running script ${relativePath(buildFile)} +****************************************************************************** +""" +*/ diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..35c03f39 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Mar 25 20:58:37 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradlew b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradlew.bat b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/another.gradle b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/another.gradle new file mode 100644 index 00000000..5d7c7415 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/another.gradle @@ -0,0 +1,15 @@ +import java.text.* + +gradle.ext.timestamp = { + def df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") + df.setTimeZone(TimeZone.getTimeZone("UTC")) + return df.format(new Date()) +} + + + +println ">>> another.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" + +// logger.info ">>> another.gradle: $gradle.gradleVersion" +// logger.info ">>> another.gradle: $gradle.gradleHomeDir" +// logger.info ">>> another.gradle: $gradle.gradleUserHomeDir" \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/init.gradle b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/init.gradle new file mode 100644 index 00000000..7b37730b --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/init.gradle @@ -0,0 +1,6 @@ +println ">>> init.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" + + +// logger.info ">>> init.gradle: $gradle.gradleVersion" +// logger.info ">>> init.gradle: $gradle.gradleHomeDir" +// logger.info ">>> init.gradle: $gradle.gradleUserHomeDir" \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/zingAnother.gradle b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/zingAnother.gradle new file mode 100644 index 00000000..92a13b38 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/init.d/zingAnother.gradle @@ -0,0 +1,6 @@ +println ">>> zingAnother.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" + + +// logger.info ">>> zingAnother.gradle: $gradle.gradleVersion" +// logger.info ">>> zingAnother.gradle: $gradle.gradleHomeDir" +// logger.info ">>> zingAnother.gradle: $gradle.gradleUserHomeDir" \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/settings.gradle b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/settings.gradle new file mode 100644 index 00000000..ec0e7549 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GradleLifeCycleScriptExamples/settings.gradle @@ -0,0 +1,6 @@ +//println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" +println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ " + +// logger.info ">>> settings.gradle: $settings.gradle.gradleVersion" +// logger.info ">>> settings.gradle: $settings.gradle.gradleHomeDir" +// logger.info ">>> settings.gradle: $settings.gradle.gradleUserHomeDir" diff --git a/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/build.gradle b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/build.gradle new file mode 100644 index 00000000..7210acc6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/build.gradle @@ -0,0 +1,194 @@ +import java.text.* + +SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") +sdf.setTimeZone(TimeZone.getTimeZone("UTC")) + + +System.out.println "Hello World now: " + sdf.format(new Date()) + + +void sayHelloWorld() { + println "Hello world!" +} + +sayHelloWorld() + +int doubleIt(int i) { + println(i) + i * 3 + def y = i +} + +println doubleIt(2) + +def s1 = "a string" +def s2 = 'a string' +def s3 = """ A + string + on + multiple + lines +""" +String interpolation +def x = 4 +println "x is $x" + +def myCourse = "gradle" +println "I'm training in: ${myCourse.toUpperCase()}" + + + +//Properties... + +class Person { + + String name + Integer age + + + Person(name, age) { + this.name = name + this.age = age + } + +} + +def p = new Person("Fred", 35) +println p.age +p.age = 36 +println p.age + +// with a Map + +Map m = new HashMap() + +m.put("foo", "Fred") +println m.get("foo") + +m.foo = "bill" +m.bar = "Jane" +m.baz = "Dave" + +m.foo +m.bar +m.baz + + +println m.foo +println m.bar +println m.baz + +//Closures + +def echoIt = { parameter -> + println parameter +} + +//called like a normal method +echoIt("Hello World!") + + +//with type Closure +Closure echoIt2 = { parameter -> + println parameter +} + + +//pass closures as parameters + +def oneArgMethod(closure) { + closure() * 2 +} + +println oneArgMethod {10} + + + + +def twoArgMethod(factor, closure){ + closure() * factor +} + +println twoArgMethod(3, {10}) + +twoArgMethod 3, {10} + + +def i = oneArgMethod { + def y = 3 + y * 2 +} + +assert i == 12 + +//common uses for closure ... iterators! +for (int j in [1,2,3]){ + println j +} + +[1,2,3].each { + println it +} + + + +// Closure resolution + + + +class Person1 { + + String name = "Fred" + + Closure nameSayer = { + println name + } +} + +def p1 = new Person1() +p1.nameSayer() + +// Closed over a context +def theName = "John" +def sayName = { + println theName +} +sayName() +theName = "Fred" +sayName() + + + +class Person2 { + + String theName + Integer theAge + + + Person2(theName, theAge) { + this.theName = theName + this.theAge = theAge + } + + + def executeInside(Closure c){ + c.delegate = this + c() + } + +} + +def p2 = new Person2("Fred", 35) +println p2.theName + +p2.executeInside {println theName} + + +// Core Gradle Objects + +logger.info "Hello!" + +apply { + println "Hello again!!" +} + diff --git a/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..71752dd6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Mar 24 21:14:56 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradlew b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradlew.bat b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/settings.gradle b/Courses/The-Gradle-Masterclass/GroovyScriptsExamples/settings.gradle new file mode 100644 index 00000000..e69de29b diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/build.gradle b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/build.gradle new file mode 100644 index 00000000..67435609 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/build.gradle @@ -0,0 +1,75 @@ +//println ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" +println ">>> build.gradle --> This is executed during the configuration phase - timestamp @ " + + +// logger.info ">>> build.gradle: $project.gradle.gradleVersion" +// logger.info ">>> build.gradle: $project.gradle.gradleHomeDir" +// logger.info ">>> build.gradle: $project.gradle.gradleUserHomeDir" + +// logger.info ">>> build.gradle: $buildFile" + +// logger.info ">>> build.gradle: ${relativePath(buildFile)}" + + +/* +logger.info """ +****************************************************************************** +Welcome to Gradle $gradle.gradleVersion - http://www.gradle.org +Gradle home is set to: $gradle.gradleHomeDir +Gradle user directory is set to: $gradle.gradleUserHomeDir + +Base directory: $projectDir +Running script ${relativePath(buildFile)} +****************************************************************************** +""" +*/ + + + +//Properties + +logger.info "has property: ${project.gradle.hasProperty('$gradleVersion')}" + +logger.info "has property: ${hasProperty('projectDir')}" + + +logger.info project.gradlePropertiesProp +logger.info "has property: ${project.hasProperty('gradlePropertiesProp')}" + + + +if ( project.hasProperty('gradlePropertiesProp') ) { + logger.info "The property file value is $gradlePropertiesProp" +} else { + logger.info "Oops! gradlePropertiesProp can't be found" +} + + + +if ( project.hasProperty('commandLineProjectProp') ) { + logger.info "The property file value is $commandLineProjectProp" +} else { + logger.info "Oops! commandLineProjectProp can't be found" +} + + +project.ext.sayHello = "Hello!" +if ( project.hasProperty('sayHello') ) { + logger.info project.sayHello +} else { + logger.info "Unable to say Hello!" +} + +if ( project.gradle.hasProperty('timestamp') ) { + logger.info project.gradle.timestamp() +} else { + logger.info "Oops! timestamp() unavailable!" +} + + +if ( gradle.ext.has('timestamp') ) { + logger.info gradle.timestamp() +} else { + logger.info "Oops! timestamp() unavailable!" +} + diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle.properties b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle.properties new file mode 100644 index 00000000..05798be9 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle.properties @@ -0,0 +1 @@ +gradlePropertiesProp=gradlePropertiesValue \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..0bd01b6f --- /dev/null +++ b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Mar 25 20:44:21 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradlew b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradlew.bat b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/settings.gradle b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/settings.gradle new file mode 100644 index 00000000..ec0e7549 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/PropertiesScriptExamples/settings.gradle @@ -0,0 +1,6 @@ +//println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" +println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ " + +// logger.info ">>> settings.gradle: $settings.gradle.gradleVersion" +// logger.info ">>> settings.gradle: $settings.gradle.gradleHomeDir" +// logger.info ">>> settings.gradle: $settings.gradle.gradleUserHomeDir" diff --git a/Courses/The-Gradle-Masterclass/README.md b/Courses/The-Gradle-Masterclass/README.md new file mode 100644 index 00000000..4472f5ec --- /dev/null +++ b/Courses/The-Gradle-Masterclass/README.md @@ -0,0 +1,9 @@ +## The Gradle Masterclass + +https://www.udemy.com/course/gradle-masterclass + +##### About + +Discover the most advanced Java Build tools on the Planet! + + diff --git a/Courses/The-Gradle-Masterclass/TaskScriptExamples/build.gradle b/Courses/The-Gradle-Masterclass/TaskScriptExamples/build.gradle new file mode 100644 index 00000000..80697aee --- /dev/null +++ b/Courses/The-Gradle-Masterclass/TaskScriptExamples/build.gradle @@ -0,0 +1,65 @@ +defaultTasks 'hello', 'hi' + +//logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ ${gradle.timestamp()}" +logger.info ">>> build.gradle --> This is executed during the configuration phase - timestamp @ " + + +task hi + +project.hi.doLast { + logger.info "Hi" +} + +task hello { + description = "Log the name of the Task" + group = "Welcome" + + doFirst{ + logger.info "My name is: $name and this is my 1st defined Action" + } + + doLast{ + logger.info "My name is: $name and this is my 2nd defined Action" + } +} + +logger.info hello.description +logger.info hello.group + + +/* +hello.doLast{ + logger.info "My name is: $name and this is my 4th defined Action" +} + +hello.doLast{ + logger.info "My name is: $name and this is my 3nd defined Action" +} + + +hello.doFirst{ + logger.info "My name is: $name and this is my 5th defined Action!! but executed when?" +} + +*/ + +/* +task hello2 { + description = "Log the name of the Task" + group = "Welcome" +} + + +hello2.doFirst{ + logger.info "My name is: $name and this is my 1st defined Action" +}.doLast{ + logger.info "My name is: $name and this is my 2nd defined Action" +}.doLast{ + logger.info "My name is: $name and this is my 4th defined Action" +}.doLast{ + logger.info "My name is: $name and this is my 3nd defined Action" +}.doFirst{ + logger.info "My name is: $name and this is my 5th defined Action!! but executed when?" +} + +*/ diff --git a/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..dcd52faf --- /dev/null +++ b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Mar 25 20:58:17 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradlew b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradlew.bat b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/TaskScriptExamples/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/TaskScriptExamples/settings.gradle b/Courses/The-Gradle-Masterclass/TaskScriptExamples/settings.gradle new file mode 100644 index 00000000..ec0e7549 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/TaskScriptExamples/settings.gradle @@ -0,0 +1,6 @@ +//println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ ${gradle.timestamp()}" +println ">>> settings.gradle --> This is executed during the initialization phase - timestamp @ " + +// logger.info ">>> settings.gradle: $settings.gradle.gradleVersion" +// logger.info ">>> settings.gradle: $settings.gradle.gradleHomeDir" +// logger.info ">>> settings.gradle: $settings.gradle.gradleUserHomeDir" diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/build.gradle.kts b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/build.gradle.kts new file mode 100644 index 00000000..ae01cf9b --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/build.gradle.kts @@ -0,0 +1,17 @@ +plugins { + id("java") +} + + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +dependencies { + testImplementation("junit:junit:4.12") +} + +repositories { + mavenCentral() +} diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..44e7c4d1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradlew b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/settings.gradle.kts b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/settings.gradle.kts new file mode 100644 index 00000000..4eb7f32c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/settings.gradle.kts @@ -0,0 +1 @@ +rootProject.name = "hello-world-kt" \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/src/main/java/samples/HelloWorld.java b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/src/main/java/samples/HelloWorld.java new file mode 100644 index 00000000..80b48129 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/src/main/java/samples/HelloWorld.java @@ -0,0 +1,12 @@ +package samples; + +public class HelloWorld { + + public static void main(String[] args) { + System.out.println(greeting()); + } + + static String greeting() { + return "Hello, world!"; + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/src/test/java/samples/HelloWorldTest.java b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/src/test/java/samples/HelloWorldTest.java new file mode 100644 index 00000000..8070cd2d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world-kt/src/test/java/samples/HelloWorldTest.java @@ -0,0 +1,17 @@ +package samples; + +import org.junit.Test; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; +import static samples.HelloWorld.greeting; + +public class HelloWorldTest { + + @Test + public void testGreeting() { + assertThat( + greeting(), + equalTo("Hello, world!")); + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/build.gradle b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/build.gradle new file mode 100644 index 00000000..35fb4149 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/build.gradle @@ -0,0 +1,17 @@ +plugins { + id "java" +} + + + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + +dependencies { + testImplementation "junit:junit:4.12" +} + +repositories { + mavenCentral() +} diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..22077b33 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Mar 27 00:14:45 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradlew b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/settings.gradle new file mode 100644 index 00000000..d185ccc4 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/settings.gradle @@ -0,0 +1 @@ +rootProject.name = "hello-world" \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/src/main/java/samples/HelloWorld.java b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/src/main/java/samples/HelloWorld.java new file mode 100644 index 00000000..80b48129 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/src/main/java/samples/HelloWorld.java @@ -0,0 +1,12 @@ +package samples; + +public class HelloWorld { + + public static void main(String[] args) { + System.out.println(greeting()); + } + + static String greeting() { + return "Hello, world!"; + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/src/test/java/samples/HelloWorldTest.java b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/src/test/java/samples/HelloWorldTest.java new file mode 100644 index 00000000..8070cd2d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-hello-world-kt/hello-world/src/test/java/samples/HelloWorldTest.java @@ -0,0 +1,17 @@ +package samples; + +import org.junit.Test; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; +import static samples.HelloWorld.greeting; + +public class HelloWorldTest { + + @Test + public void testGreeting() { + assertThat( + greeting(), + equalTo("Hello, world!")); + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/.gitignore b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/.gitignore new file mode 100644 index 00000000..78b18cf2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/.gitignore @@ -0,0 +1,13 @@ +*.class + +# Package Files # +*.jar +*.war +*.ear + +bin/ +target/ +.settings/ + +.metadata +.classpath \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/build.gradle.kts b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/build.gradle.kts new file mode 100644 index 00000000..d3952464 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/build.gradle.kts @@ -0,0 +1,35 @@ +plugins { + id("java") +} + +group = "com.denofprogramming" +version = "0.0.1-SNAPSHOT" + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} +repositories{ + mavenCentral() +} + +dependencies { + implementation("org.apache.commons:commons-math3:3.2") + testImplementation("junit:junit:4.11") +} + + +val jar: Jar by tasks +jar.apply { + + baseName = "${project.name}-all" + manifest { + attributes["Implementation-Title"] = "Jar File -all Example" + attributes["Implementation-Version"] = version + attributes["Main-Class"] = "com.denofprogramming.random.App" + } + from(configurations["runtimeClasspath"].map({file -> project.zipTree(file) })) +} + + + diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..44e7c4d1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradlew b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/settings.gradle.kts b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/settings.gradle.kts new file mode 100644 index 00000000..bb599d28 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/settings.gradle.kts @@ -0,0 +1,2 @@ + +rootProject.name = "gradlejava1-complete-Kt" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..59d35289 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,16 @@ +package com.denofprogramming.random; + +/** + * + * + */ +public class App +{ + public static void main(String[] args) + { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..07a0a6e6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator +{ + + public String name() + { + return "Default Randon Number Generator"; + } + + public int generate() + { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(1, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..34174e16 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,16 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * + */ +public interface RandomGenerator +{ + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..c8de2577 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-complete-Kt/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,43 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Default Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() + { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 1 and 10: ", generatedInt >= 1 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/.gitignore b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/.gitignore new file mode 100644 index 00000000..78b18cf2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/.gitignore @@ -0,0 +1,13 @@ +*.class + +# Package Files # +*.jar +*.war +*.ear + +bin/ +target/ +.settings/ + +.metadata +.classpath \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/build.gradle b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/build.gradle new file mode 100644 index 00000000..cd1a49b3 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/build.gradle @@ -0,0 +1,30 @@ +plugins { + id 'java' +} + +project.group = 'com.denofprogramming' +project.version = '0.0.1-SNAPSHOT' + +repositories{ + mavenCentral() +} + +dependencies { + implementation 'org.apache.commons:commons-math3:3.6.1' + testImplementation 'junit:junit:4.12' +} + +jar { + baseName = "$project.name-all" + + manifest { + attributes 'Implementation-Title' : 'Gradle all inclusive jar', + 'Implementation-Version': project.version, + 'Created-By':'denOfprogramming', + 'Main-Class':'com.denofprogramming.random.App' + } + + from { + project.configurations.runtimeClasspath.collect {File file -> project.zipTree(file)} + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..18c17b19 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Mar 27 00:38:48 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradlew b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/settings.gradle new file mode 100644 index 00000000..57d314a1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/settings.gradle @@ -0,0 +1,2 @@ + +rootProject.name = 'gradlejava1-initial' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..59d35289 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,16 @@ +package com.denofprogramming.random; + +/** + * + * + */ +public class App +{ + public static void main(String[] args) + { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..07a0a6e6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator +{ + + public String name() + { + return "Default Randon Number Generator"; + } + + public int generate() + { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(1, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..34174e16 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,16 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * + */ +public interface RandomGenerator +{ + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..c8de2577 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application-Kt/gradlejava1-initial-Kt/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,43 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Default Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() + { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 1 and 10: ", generatedInt >= 1 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/.gitignore b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/.gitignore new file mode 100644 index 00000000..78b18cf2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/.gitignore @@ -0,0 +1,13 @@ +*.class + +# Package Files # +*.jar +*.war +*.ear + +bin/ +target/ +.settings/ + +.metadata +.classpath \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/build.gradle b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/build.gradle new file mode 100644 index 00000000..2008711c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/build.gradle @@ -0,0 +1,37 @@ +plugins { + id 'java' +} + + +group = 'com.denofprogramming' +version = '0.0.1-SNAPSHOT' + + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + +repositories{ + mavenCentral() +} + + + +dependencies { + implementation 'org.apache.commons:commons-math3:3.2' + testImplementation 'junit:junit:4.11' +} + + +jar { + manifest { + attributes 'Implementation-Title': 'Gradle Jar File Example', + 'Implementation-Version': version, + 'Created-By' : "denofprogramming", + 'Main-Class': 'com.denofprogramming.random.App' + } + baseName = "$project.name-all" + from {project.configurations.runtimeClasspath.collect {File file -> project.zipTree(file) } } +} + + diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..16c1ed7d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 12:46:08 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradlew b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/settings.gradle new file mode 100644 index 00000000..90ac9606 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/settings.gradle @@ -0,0 +1,2 @@ + +rootProject.name = 'gradlejava1-complete' diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..80ba5085 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,14 @@ +package com.denofprogramming.random; + +/** + * + * + */ +public class App { + public static void main(String[] args) { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..a5c11e51 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,23 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator { + + public String name() { + return "Default Randon Number Generator"; + } + + public int generate() { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(1, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..8a5604c8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,15 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * + */ +public interface RandomGenerator { + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..39b711a1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,38 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest { + + private RandomGenerator randomGenerator; + + @Before + public void setUp() { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() { + randomGenerator = null; + } + + @Test + public void testName() { + Assert.assertSame("Name is not the same as expected: ", "Default Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 1 and 10: ", generatedInt >= 1 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/.gitignore b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/.gitignore new file mode 100644 index 00000000..78b18cf2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/.gitignore @@ -0,0 +1,13 @@ +*.class + +# Package Files # +*.jar +*.war +*.ear + +bin/ +target/ +.settings/ + +.metadata +.classpath \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/build.gradle b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/build.gradle new file mode 100644 index 00000000..c9d13d75 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/build.gradle @@ -0,0 +1,3 @@ +plugins { + id 'java' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..af56602e --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 12:41:19 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradlew b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/settings.gradle new file mode 100644 index 00000000..418e89e0 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/settings.gradle @@ -0,0 +1,2 @@ + +rootProject.name = 'gradlejava1-initial' diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..80ba5085 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,14 @@ +package com.denofprogramming.random; + +/** + * + * + */ +public class App { + public static void main(String[] args) { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..a5c11e51 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,23 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator { + + public String name() { + return "Default Randon Number Generator"; + } + + public int generate() { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(1, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..8a5604c8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,15 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * + */ +public interface RandomGenerator { + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..39b711a1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-console-application/gradlejava1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,38 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest { + + private RandomGenerator randomGenerator; + + @Before + public void setUp() { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() { + randomGenerator = null; + } + + @Test + public void testName() { + Assert.assertSame("Name is not the same as expected: ", "Default Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 1 and 10: ", generatedInt >= 1 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/.gitignore b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/.gitignore new file mode 100644 index 00000000..2cdc51ba --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/.gitignore @@ -0,0 +1,16 @@ +*.class + +# Package Files # +*.jar +*.war +*.ear + +bin/ +target/ +.settings/ + +.metadata +.classpath +/.springBeans +/target +/target diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/build.gradle b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/build.gradle new file mode 100644 index 00000000..a71ad3b0 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/build.gradle @@ -0,0 +1,72 @@ +plugins { + id 'java' + id 'war' + id 'project-report' +} + + + +group = 'com.denofprogramming' +version = '0.0.1-SNAPSHOT' + + + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + + +ext.tomcatHome = 'C:/software/Apache Software Foundation/apache-tomcat-9.0.1' +ext.tomcatWebapps = "$tomcatHome/webapps" + + + +war { + archiveName = 'mywebapp.war' +} + +repositories { + mavenCentral() +} + + +task deployToTomcat(type: Copy, dependsOn: 'war'){ + from war + into "$tomcatWebapps" +} + +dependencies { + + + implementation ('org.springframework:spring-webmvc:4.0.3.RELEASE') { + exclude group: 'commons-logging', module: 'commons-logging' + } + + //depends on commons logging so we need to use the jcl-over-slf4j once exluded commons logging for backward compatibility + //compile 'org.springframework:spring-webmvc:4.0.3.RELEASE' + + // this is needed once we exclude commons logging for backward compatibility issues for this verion of Spring MVC + //https://www.slf4j.org/legacy.html + implementation 'org.slf4j:jcl-over-slf4j:1.7.25' + + //now we can standardise on the SLF4j logging interface + //https://www.slf4j.org/manual.html + implementation 'org.slf4j:slf4j-log4j12:1.7.25' + + //This comes as a tranient dependency with slf4j over log4j + //compile 'log4j:log4j:1.2.17' + + + + implementation 'javax.inject:javax.inject:1' + implementation 'org.apache.commons:commons-math3:3.2' + implementation 'jstl:jstl:1.2' + + + + compileOnly "javax.servlet:javax.servlet-api:3.0.1" + testImplementation 'junit:junit:4.11' + +} + + diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..6dab8e84 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 17:18:37 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradlew b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/config/Config.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/config/Config.java new file mode 100644 index 00000000..10c74f07 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/config/Config.java @@ -0,0 +1,40 @@ +package com.denofprogramming.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.view.JstlView; +import org.springframework.web.servlet.view.UrlBasedViewResolver; + +import com.denofprogramming.random.DefaultRandomNumberGenerator; +import com.denofprogramming.random.RandomGenerator; + +/** + * @author denOfProgramming + * + */ +@Configuration +// Marks this class as configuration +// Specifies which package to scan +@ComponentScan("com.denofprogramming") +// Enables Spring's annotations +@EnableWebMvc +public class Config { + + @Bean + public UrlBasedViewResolver setupViewResolver() { + UrlBasedViewResolver resolver = new UrlBasedViewResolver(); + resolver.setPrefix("/WEB-INF/views/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } + + @Bean + public RandomGenerator randomGenerator() { + return new DefaultRandomNumberGenerator(); + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/config/WebInitializer.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/config/WebInitializer.java new file mode 100644 index 00000000..ad413123 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/config/WebInitializer.java @@ -0,0 +1,29 @@ +package com.denofprogramming.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration.Dynamic; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +/** + * @author denOfProgramming + * + */ +public class WebInitializer implements WebApplicationInitializer { + + public void onStartup(ServletContext servletContext) throws ServletException { + + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + ctx.register(Config.class); + ctx.setServletContext(servletContext); + + Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); + servlet.addMapping("/"); + servlet.setLoadOnStartup(1); + + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/controller/IdentifierGenerationController.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/controller/IdentifierGenerationController.java new file mode 100644 index 00000000..86026f38 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/controller/IdentifierGenerationController.java @@ -0,0 +1,77 @@ +package com.denofprogramming.controller; + +import javax.inject.Inject; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +//import org.apache.log4j.spi.LoggerFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +//import org.apache.log4j.Logger; +//import org.apache.log4j.spi.LoggerFactory; +//spring imports +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.denofprogramming.random.GeneratedRandomIdentifier; +// denOfProgramming imports +import com.denofprogramming.random.RandomGenerator; +//logger imports +//import org.apache.log4j.Logger; + +/** + * + * Example mvc controller class, generates a new number and returns it to the + * view layer + * + * - Also shows the various logging api. + * i.e. "Apache Commons Logging (JCL)", Log4j and "Simple Logging Facade" * + * + * + * See reference documents: + * http://www.slf4j.org/index.html + * https://commons.apache.org/proper/commons-logging/guide.html + * https://logging.apache.org/log4j/1.2/ + * + * @author denOfProgramming + * + */ +@Controller +public class IdentifierGenerationController { + + // Using the slf4j api directly - remove comments from this code only after SLF4J dependencies are added, see tutorials. + private static final Logger logger = LoggerFactory.getLogger(IdentifierGenerationController.class); + + // using the log4j api, jar provided by our specific dependency + //private static final Logger logger = Logger.getLogger("com.denofprogramming.controller.IdentifierGenerationController"); + + // using the JCL api, jar provided by transient dependency via spring-core + private Log log = LogFactory.getLog(IdentifierGenerationController.class); + + @Inject + private RandomGenerator idGenerator; + + @RequestMapping("/new") + public String showNewIdentifier(Model model) { + // Only as an example to show different logging dependencies + // included in our project. + // Better, is to use only one and its good practice to use slf4j. + + // debug from JCL + log.debug("logging is using Class: " + log.getClass().getCanonicalName()); + + // debug from log4j + logger.debug("logging is using CLass: " + + logger.getClass().getCanonicalName()); + + final GeneratedRandomIdentifier anIdentifier = idGenerator.generate(); + + model.addAttribute("creator", anIdentifier.createdBy()); + model.addAttribute("id", anIdentifier.identifier()); + + return "newId"; + + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/DefaultRandomNumberGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/DefaultRandomNumberGenerator.java new file mode 100644 index 00000000..7e2a0824 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/DefaultRandomNumberGenerator.java @@ -0,0 +1,31 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + + +/** + * @author denOfProgramming + * + */ +public class DefaultRandomNumberGenerator implements RandomGenerator { + + + + public GeneratedRandomIdentifier generate() { + final int id = generateNumber(); + return GeneratedRandomIdentifier.valueOf(id, name()); + } + + protected int generateNumber() { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + + public String name() { + return "Default Random Number Generator"; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/GeneratedRandomIdentifier.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/GeneratedRandomIdentifier.java new file mode 100644 index 00000000..e0099353 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/GeneratedRandomIdentifier.java @@ -0,0 +1,40 @@ +package com.denofprogramming.random; + + +/** + * @author denOfProgramming + * + */ +public final class GeneratedRandomIdentifier { + + private String createdBy; + private int id; + + + private GeneratedRandomIdentifier(){ + super(); + } + + public String createdBy(){ + return createdBy; + } + + public String identifier(){ + return Integer.toString(id); + } + + + @Override + public String toString() { + return "Identifier: " + identifier() + "created by: " + createdBy(); + } + + + public static GeneratedRandomIdentifier valueOf(final int value, final String createdBy){ + final GeneratedRandomIdentifier anIdentifier = new GeneratedRandomIdentifier(); + anIdentifier.id = value; + anIdentifier.createdBy = createdBy; + return anIdentifier; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..4e45275c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,18 @@ +/** + * + */ +package com.denofprogramming.random; + + +/** + * @author denOfProgramming + * + */ +public interface RandomGenerator +{ + + String name(); + + GeneratedRandomIdentifier generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/resources/log4j.properties b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/resources/log4j.properties new file mode 100644 index 00000000..2bc5ded3 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/resources/log4j.properties @@ -0,0 +1,9 @@ +log4j.rootLogger=INFO, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +# Print only messages of level DEBUG or above in the package com.denofprogramming +log4j.logger.com.denofprogramming=DEBUG \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/webapp/WEB-INF/views/newId.jsp b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/webapp/WEB-INF/views/newId.jsp new file mode 100644 index 00000000..04faa7a6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/webapp/WEB-INF/views/newId.jsp @@ -0,0 +1,13 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +Spring4 MVC -Number Generator + + +

Your new Identifier is: ${id}

+

It was brought to you using the: "${creator}"

+ + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/webapp/index.jsp b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/webapp/index.jsp new file mode 100644 index 00000000..18da0783 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Welcome to Id Generator

+ + diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/test/java/com/denofprogramming/random/DefaultRandomNumberGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/test/java/com/denofprogramming/random/DefaultRandomNumberGeneratorTest.java new file mode 100644 index 00000000..6b1264e8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-complete/src/test/java/com/denofprogramming/random/DefaultRandomNumberGeneratorTest.java @@ -0,0 +1,46 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +/** + * @author denOfProgramming + * + */ +public class DefaultRandomNumberGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomNumberGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Default Random Number Generator", randomGenerator.name()); + } + + @Ignore + @Test + public void testRandomGenerator() + { + int generatedInt = ((DefaultRandomNumberGenerator)randomGenerator).generateNumber(); + assertTrue("Generated int was not between 5 and 10: ", generatedInt >= 5 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/.gitignore b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/.gitignore new file mode 100644 index 00000000..2cdc51ba --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/.gitignore @@ -0,0 +1,16 @@ +*.class + +# Package Files # +*.jar +*.war +*.ear + +bin/ +target/ +.settings/ + +.metadata +.classpath +/.springBeans +/target +/target diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/build.gradle b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/build.gradle new file mode 100644 index 00000000..9426e4ad --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/build.gradle @@ -0,0 +1,33 @@ +plugins { + id 'java' +} + +group = 'com.denofprogramming' +version = '0.0.1-SNAPSHOT' + + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + + +repositories{ + mavenCentral() +} + + +dependencies { + + + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' + implementation 'org.apache.commons:commons-math3:3.2' + implementation 'jstl:jstl:1.2' + implementation 'log4j:log4j:1.2.17' + + + compileOnly "javax.servlet:javax.servlet-api:3.0.1" + testImplementation 'junit:junit:4.11' + +} + + diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..7d0fa22b --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 17:18:29 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradlew b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/config/Config.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/config/Config.java new file mode 100644 index 00000000..10c74f07 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/config/Config.java @@ -0,0 +1,40 @@ +package com.denofprogramming.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.view.JstlView; +import org.springframework.web.servlet.view.UrlBasedViewResolver; + +import com.denofprogramming.random.DefaultRandomNumberGenerator; +import com.denofprogramming.random.RandomGenerator; + +/** + * @author denOfProgramming + * + */ +@Configuration +// Marks this class as configuration +// Specifies which package to scan +@ComponentScan("com.denofprogramming") +// Enables Spring's annotations +@EnableWebMvc +public class Config { + + @Bean + public UrlBasedViewResolver setupViewResolver() { + UrlBasedViewResolver resolver = new UrlBasedViewResolver(); + resolver.setPrefix("/WEB-INF/views/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } + + @Bean + public RandomGenerator randomGenerator() { + return new DefaultRandomNumberGenerator(); + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/config/WebInitializer.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/config/WebInitializer.java new file mode 100644 index 00000000..ad413123 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/config/WebInitializer.java @@ -0,0 +1,29 @@ +package com.denofprogramming.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration.Dynamic; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +/** + * @author denOfProgramming + * + */ +public class WebInitializer implements WebApplicationInitializer { + + public void onStartup(ServletContext servletContext) throws ServletException { + + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + ctx.register(Config.class); + ctx.setServletContext(servletContext); + + Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); + servlet.addMapping("/"); + servlet.setLoadOnStartup(1); + + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/controller/IdentifierGenerationController.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/controller/IdentifierGenerationController.java new file mode 100644 index 00000000..884fe3f8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/controller/IdentifierGenerationController.java @@ -0,0 +1,71 @@ +package com.denofprogramming.controller; + +import javax.inject.Inject; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.log4j.Logger; +//spring imports +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +import com.denofprogramming.random.GeneratedRandomIdentifier; +// denOfProgramming imports +import com.denofprogramming.random.RandomGenerator; + +/** + * + * Example mvc controller class, generates a new number and returns it to the + * view layer + * + * - Also shows the various logging api. + * i.e. "Apache Commons Logging (JCL)", Log4j and "Simple Logging Facade" * + * + * + * See reference documents: + * http://www.slf4j.org/index.html + * https://commons.apache.org/proper/commons-logging/guide.html + * https://logging.apache.org/log4j/1.2/ + * + * @author denOfProgramming + * + */ +@Controller +public class IdentifierGenerationController { + + // Using the slf4j api directly - remove comments from this code only after SLF4J dependencies are added, see tutorials. + //private static final Logger logger = LoggerFactory.getLogger(IdentifierGenerationController.class); + + // using the log4j api, jar provided by our specific dependency + private static final Logger logger = Logger.getLogger("com.denofprogramming.controller.IdentifierGenerationController"); + + // using the JCL api, jar provided by transient dependency via spring-core + private Log log = LogFactory.getLog(IdentifierGenerationController.class); + + @Inject + private RandomGenerator idGenerator; + + @RequestMapping("/new") + public String showNewIdentifier(Model model) { + // Only as an example to show different logging dependencies + // included in our project. + // Better, is to use only one and its good practice to use slf4j. + + // debug from JCL + log.debug("logging is using Class: " + log.getClass().getCanonicalName()); + + // debug from log4j + logger.debug("logging is using CLass: " + + logger.getClass().getCanonicalName()); + + final GeneratedRandomIdentifier anIdentifier = idGenerator.generate(); + + model.addAttribute("creator", anIdentifier.createdBy()); + model.addAttribute("id", anIdentifier.identifier()); + + return "newId"; + + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/DefaultRandomNumberGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/DefaultRandomNumberGenerator.java new file mode 100644 index 00000000..7e2a0824 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/DefaultRandomNumberGenerator.java @@ -0,0 +1,31 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + + +/** + * @author denOfProgramming + * + */ +public class DefaultRandomNumberGenerator implements RandomGenerator { + + + + public GeneratedRandomIdentifier generate() { + final int id = generateNumber(); + return GeneratedRandomIdentifier.valueOf(id, name()); + } + + protected int generateNumber() { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + + public String name() { + return "Default Random Number Generator"; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/GeneratedRandomIdentifier.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/GeneratedRandomIdentifier.java new file mode 100644 index 00000000..e0099353 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/GeneratedRandomIdentifier.java @@ -0,0 +1,40 @@ +package com.denofprogramming.random; + + +/** + * @author denOfProgramming + * + */ +public final class GeneratedRandomIdentifier { + + private String createdBy; + private int id; + + + private GeneratedRandomIdentifier(){ + super(); + } + + public String createdBy(){ + return createdBy; + } + + public String identifier(){ + return Integer.toString(id); + } + + + @Override + public String toString() { + return "Identifier: " + identifier() + "created by: " + createdBy(); + } + + + public static GeneratedRandomIdentifier valueOf(final int value, final String createdBy){ + final GeneratedRandomIdentifier anIdentifier = new GeneratedRandomIdentifier(); + anIdentifier.id = value; + anIdentifier.createdBy = createdBy; + return anIdentifier; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..4e45275c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,18 @@ +/** + * + */ +package com.denofprogramming.random; + + +/** + * @author denOfProgramming + * + */ +public interface RandomGenerator +{ + + String name(); + + GeneratedRandomIdentifier generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/resources/log4j.properties b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/resources/log4j.properties new file mode 100644 index 00000000..2bc5ded3 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/resources/log4j.properties @@ -0,0 +1,9 @@ +log4j.rootLogger=INFO, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +# Print only messages of level DEBUG or above in the package com.denofprogramming +log4j.logger.com.denofprogramming=DEBUG \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/webapp/WEB-INF/views/newId.jsp b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/webapp/WEB-INF/views/newId.jsp new file mode 100644 index 00000000..04faa7a6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/webapp/WEB-INF/views/newId.jsp @@ -0,0 +1,13 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +Spring4 MVC -Number Generator + + +

Your new Identifier is: ${id}

+

It was brought to you using the: "${creator}"

+ + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/webapp/index.jsp b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/webapp/index.jsp new file mode 100644 index 00000000..18da0783 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Welcome to Id Generator

+ + diff --git a/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/test/java/com/denofprogramming/random/DefaultRandomNumberGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/test/java/com/denofprogramming/random/DefaultRandomNumberGeneratorTest.java new file mode 100644 index 00000000..6b1264e8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-java-web-application/sampleWebApp-initial/src/test/java/com/denofprogramming/random/DefaultRandomNumberGeneratorTest.java @@ -0,0 +1,46 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; + +/** + * @author denOfProgramming + * + */ +public class DefaultRandomNumberGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomNumberGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Default Random Number Generator", randomGenerator.name()); + } + + @Ignore + @Test + public void testRandomGenerator() + { + int generatedInt = ((DefaultRandomNumberGenerator)randomGenerator).generateNumber(); + assertTrue("Generated int was not between 5 and 10: ", generatedInt >= 5 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/.gitignore b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/.gitignore new file mode 100644 index 00000000..974babbc --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/.gitignore @@ -0,0 +1,75 @@ +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + + +### Java ### +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib + + + +local.properties +.settings/ +.loadpath + +# Eclipse Core +#.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/build.gradle new file mode 100644 index 00000000..588b3e65 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/build.gradle @@ -0,0 +1,46 @@ +subprojects { + apply plugin: 'java' + + + //https://discuss.gradle.org/t/when-should-we-use-java-plugin-and-when-java-library-plugin/25377 + + group = 'com.denofprogramming' + version = '0.0.1-SNAPSHOT' + + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + + repositories { + mavenCentral() + } + +} + + +project(':pickerNumberApplication1-complete') { + + dependencies { + implementation 'org.apache.commons:commons-math3:3.2' + implementation 'org.apache.logging.log4j:log4j-core:2.5' + testImplementation "junit:junit:4.12" + } +} + +project(':plusplus-complete') { + + dependencies { + implementation project(':randomNumberGen1-complete') + } +} + +project(':randomNumberGen1-complete') { + apply plugin: 'java-library' + + dependencies { + api 'org.apache.commons:commons-math3:3.2' + implementation 'org.apache.logging.log4j:log4j-core:2.5' + testImplementation "junit:junit:4.12" + } +} + + diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..c55a95df --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 20:14:38 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradlew b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/build.gradle new file mode 100644 index 00000000..e69de29b diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..40687afe --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,18 @@ +package com.denofprogramming.random; + +/** + * + * + */ +public class App +{ + + + public static void main(String[] args) + { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..b62b9061 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator +{ + + public String name() + { + return "Default Randon Number Generator"; + } + + public int generate() + { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..0e0006f8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,17 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * @author TT + * + */ +public interface RandomGenerator +{ + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/resources/log4j2.xml b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/resources/log4j2.xml new file mode 100644 index 00000000..68b1c437 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/main/resources/log4j2.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..3c4592af --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/pickerNumberApplication1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,43 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Default Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() + { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 5 and 10: ", generatedInt >= 5 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/plusplus-complete/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/plusplus-complete/build.gradle new file mode 100644 index 00000000..9c884443 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/plusplus-complete/build.gradle @@ -0,0 +1,2 @@ +//sourceCompatibility = 1.8 +//targetCompatibility = 1.8 \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/plusplus-complete/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/plusplus-complete/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..2c275733 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/plusplus-complete/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,24 @@ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class App { + + public static void main(String[] args) { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + System.out.println("The 2nd number is :" + generateMy()); + + } + + public static int generateMy() { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/build.gradle new file mode 100644 index 00000000..9c884443 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/build.gradle @@ -0,0 +1,2 @@ +//sourceCompatibility = 1.8 +//targetCompatibility = 1.8 \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..8aa0d694 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator +{ + + public String name() + { + return "Main Randon Number Generator"; + } + + public int generate() + { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..0e0006f8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,17 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * @author TT + * + */ +public interface RandomGenerator +{ + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..5b817f71 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/randomNumberGen1-complete/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,43 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Main Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() + { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 5 and 10: ", generatedInt >= 5 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/settings.gradle new file mode 100644 index 00000000..cc60d7db --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-complete/allAboutNumbers-complete/settings.gradle @@ -0,0 +1,6 @@ +include 'pickerNumberApplication1-complete', 'plusplus-complete', 'randomNumberGen1-complete' + +rootProject.name = 'allAboutNumbers-complete' + + + diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/.gitignore b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/.gitignore new file mode 100644 index 00000000..974babbc --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/.gitignore @@ -0,0 +1,75 @@ +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + + +### Java ### +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib + + + +local.properties +.settings/ +.loadpath + +# Eclipse Core +#.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/build.gradle new file mode 100644 index 00000000..64802669 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/build.gradle @@ -0,0 +1,4 @@ +subprojects { + apply plugin: 'java' + } + diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..7806dcd0 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 20:14:06 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradlew b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/build.gradle new file mode 100644 index 00000000..e69de29b diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..40687afe --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,18 @@ +package com.denofprogramming.random; + +/** + * + * + */ +public class App +{ + + + public static void main(String[] args) + { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..b62b9061 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator +{ + + public String name() + { + return "Default Randon Number Generator"; + } + + public int generate() + { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..0e0006f8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,17 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * @author TT + * + */ +public interface RandomGenerator +{ + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/resources/log4j2.xml b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/resources/log4j2.xml new file mode 100644 index 00000000..68b1c437 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/main/resources/log4j2.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..3c4592af --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/pickerNumberApplication1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,43 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Default Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() + { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 5 and 10: ", generatedInt >= 5 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/plusplus-initial/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/plusplus-initial/build.gradle new file mode 100644 index 00000000..e69de29b diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/plusplus-initial/src/main/java/com/denofprogramming/random/App.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/plusplus-initial/src/main/java/com/denofprogramming/random/App.java new file mode 100644 index 00000000..2c275733 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/plusplus-initial/src/main/java/com/denofprogramming/random/App.java @@ -0,0 +1,24 @@ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class App { + + public static void main(String[] args) { + + RandomGenerator aRandomGenerator = new DefaultRandomGenerator(); + System.out.println("The number is :" + aRandomGenerator.generate()); + System.out.println("The 2nd number is :" + generateMy()); + + } + + public static int generateMy() { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/build.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/build.gradle new file mode 100644 index 00000000..e69de29b diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java new file mode 100644 index 00000000..8aa0d694 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/main/java/com/denofprogramming/random/DefaultRandomGenerator.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.denofprogramming.random; + +import org.apache.commons.math3.random.RandomDataGenerator; + +/** + * + * + */ +public class DefaultRandomGenerator implements RandomGenerator +{ + + public String name() + { + return "Main Randon Number Generator"; + } + + public int generate() + { + final RandomDataGenerator aRandomDataGenerator = new RandomDataGenerator(); + return aRandomDataGenerator.nextInt(5, 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java new file mode 100644 index 00000000..0e0006f8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/main/java/com/denofprogramming/random/RandomGenerator.java @@ -0,0 +1,17 @@ +/** + * + */ +package com.denofprogramming.random; + +/** + * @author TT + * + */ +public interface RandomGenerator +{ + + String name(); + + int generate(); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java new file mode 100644 index 00000000..5b817f71 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/randomNumberGen1-initial/src/test/java/com/denofprogramming/random/RandomGeneratorTest.java @@ -0,0 +1,43 @@ +package com.denofprogramming.random; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class RandomGeneratorTest +{ + + private RandomGenerator randomGenerator; + + @Before + public void setUp() + { + randomGenerator = new DefaultRandomGenerator(); + } + + @After + public void after() + { + randomGenerator = null; + } + + @Test + public void testName() + { + Assert.assertSame("Name is not the same as expected: ", "Main Randon Number Generator", randomGenerator.name()); + } + + @Test + public void testRandomGenerator() + { + int generatedInt = randomGenerator.generate(); + assertTrue("Generated int was not between 5 and 10: ", generatedInt >= 5 && generatedInt <= 10); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/settings.gradle new file mode 100644 index 00000000..ae2f0194 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-multiProject/gradle-multiProject-initial/allAboutNumbers-initial/settings.gradle @@ -0,0 +1,6 @@ +include 'pickerNumberApplication1-initial', 'plusplus-initial', 'randomNumberGen1-initial' + +rootProject.name = 'allAboutNumbers-initial' + + + diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/.gitignore b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/.gitignore new file mode 100644 index 00000000..926a9ccf --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/.gitignore @@ -0,0 +1,74 @@ +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties + +### git ### +.git + +### Java ### +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + + +### Eclipse ### + +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath + +# Eclipse Core +#.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-integration/academy-audit-integration.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-integration/academy-audit-integration.gradle new file mode 100644 index 00000000..2c3d2138 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-integration/academy-audit-integration.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Audit Integration Tests.' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/academy-audit-interface.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/academy-audit-interface.gradle new file mode 100644 index 00000000..c71138e1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/academy-audit-interface.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Audit Public API.' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/controller/AuditControllerInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/controller/AuditControllerInterface.java new file mode 100644 index 00000000..10680193 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/controller/AuditControllerInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.AuditDetail; + +public interface AuditControllerInterface extends ControllerInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/model/AuditDetail.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/model/AuditDetail.java new file mode 100644 index 00000000..60cbd118 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/model/AuditDetail.java @@ -0,0 +1,5 @@ +package com.denofprogramming.model; + +public class AuditDetail extends DomainObject { + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/repository/AuditRepositoryInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/repository/AuditRepositoryInterface.java new file mode 100644 index 00000000..43b11311 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/repository/AuditRepositoryInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.repository; + +import com.denofprogramming.model.AuditDetail; + +public interface AuditRepositoryInterface extends RepositoryInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/service/AuditServiceInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/service/AuditServiceInterface.java new file mode 100644 index 00000000..824d0960 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-interface/src/main/java/com/denofprogramming/service/AuditServiceInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.AuditDetail; + +public interface AuditServiceInterface extends ServiceInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-repository/academy-audit-repository.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-repository/academy-audit-repository.gradle new file mode 100644 index 00000000..03836382 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-repository/academy-audit-repository.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Audit Repository.' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-repository/src/main/java/com/denofprogramming/repository/AuditRepository.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-repository/src/main/java/com/denofprogramming/repository/AuditRepository.java new file mode 100644 index 00000000..c17a88f5 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit-repository/src/main/java/com/denofprogramming/repository/AuditRepository.java @@ -0,0 +1,19 @@ +package com.denofprogramming.repository; + +import com.denofprogramming.model.AuditDetail; + +public class AuditRepository implements AuditRepositoryInterface{ + + @Override + public AuditDetail read(AuditDetail domainObject) { + // TODO Auto-generated method stub + return null; + } + + @Override + public AuditDetail update(AuditDetail domainObject) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/academy-audit.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/academy-audit.gradle new file mode 100644 index 00000000..20dfaba2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/academy-audit.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Audit.' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/src/main/java/com/denofprogramming/controller/AuditController.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/src/main/java/com/denofprogramming/controller/AuditController.java new file mode 100644 index 00000000..a98831a9 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/src/main/java/com/denofprogramming/controller/AuditController.java @@ -0,0 +1,17 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.AuditDetail; + +public class AuditController implements AuditControllerInterface{ + + @Override + public AuditDetail read(AuditDetail DomainObject) { + return null; + } + + @Override + public AuditDetail update(AuditDetail DomainObject) { + return null; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/src/main/java/com/denofprogramming/service/AuditService.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/src/main/java/com/denofprogramming/service/AuditService.java new file mode 100644 index 00000000..d53b76e4 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-audit/src/main/java/com/denofprogramming/service/AuditService.java @@ -0,0 +1,17 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.AuditDetail; + +public class AuditService implements AuditServiceInterface{ + + @Override + public AuditDetail read(AuditDetail domainObject) { + return null; + } + + @Override + public AuditDetail update(AuditDetail domainObject) { + return null; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-integration/academy-courses-integration.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-integration/academy-courses-integration.gradle new file mode 100644 index 00000000..44065868 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-integration/academy-courses-integration.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Courses Integration Tests' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/academy-courses-interface.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/academy-courses-interface.gradle new file mode 100644 index 00000000..9722ed12 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/academy-courses-interface.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Courses Public API' diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/controller/CourseControllerInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/controller/CourseControllerInterface.java new file mode 100644 index 00000000..ad2f79e5 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/controller/CourseControllerInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.Course; + +public interface CourseControllerInterface extends ControllerInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/model/Course.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/model/Course.java new file mode 100644 index 00000000..d93acaae --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/model/Course.java @@ -0,0 +1,25 @@ +package com.denofprogramming.model; + +public class Course extends DomainObject { + + + private String name; + + + public Course(){ + super(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Course [name=" + name + "]"; + } +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/repository/CourseRepositoryInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/repository/CourseRepositoryInterface.java new file mode 100644 index 00000000..53b49e57 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/repository/CourseRepositoryInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.repository; + +import com.denofprogramming.model.Course; + +public interface CourseRepositoryInterface extends RepositoryInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/service/CourseServiceInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/service/CourseServiceInterface.java new file mode 100644 index 00000000..fa3b26d5 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-interface/src/main/java/com/denofprogramming/service/CourseServiceInterface.java @@ -0,0 +1,8 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.Course; + +public interface CourseServiceInterface extends ServiceInterface{ + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-repository/academy-courses-repository.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-repository/academy-courses-repository.gradle new file mode 100644 index 00000000..8fa2cfb1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-repository/academy-courses-repository.gradle @@ -0,0 +1,5 @@ +description = 'Teaching Academy Courses Repository' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-repository/src/main/java/com/denofprogramming/repository/CourseRepository.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-repository/src/main/java/com/denofprogramming/repository/CourseRepository.java new file mode 100644 index 00000000..6c9af8c6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses-repository/src/main/java/com/denofprogramming/repository/CourseRepository.java @@ -0,0 +1,34 @@ +package com.denofprogramming.repository; + +import java.util.logging.Logger; + +import org.springframework.stereotype.Component; + +import com.denofprogramming.model.Course; + +@Component +public class CourseRepository implements CourseRepositoryInterface{ + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.repository.CourseRepository"); + + @Override + public Course read(Course domain) { + logger.info("Entered method " + this.getClass().getSimpleName() + " read() with " + domain); + + final Course course = new Course(); + course.setId(Long.valueOf("10102")); + course.setName("Spring101"); + + logger.info("Exiting method " + this.getClass().getSimpleName() + " read() with " + course); + return course; + } + + @Override + public Course update(Course domain) { + return null; + } + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/academy-courses.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/academy-courses.gradle new file mode 100644 index 00000000..8fcf271b --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/academy-courses.gradle @@ -0,0 +1,6 @@ +description = 'Teaching Academy Courses Implementation.' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/src/main/java/com/denofprogramming/controller/CourseController.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/src/main/java/com/denofprogramming/controller/CourseController.java new file mode 100644 index 00000000..55ab1964 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/src/main/java/com/denofprogramming/controller/CourseController.java @@ -0,0 +1,33 @@ +package com.denofprogramming.controller; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Controller; + +import com.denofprogramming.model.Course; +import com.denofprogramming.service.CourseServiceInterface; + +@Controller +public class CourseController implements CourseControllerInterface{ + + @Inject + private CourseServiceInterface courseService; + + private static final Logger logger = Logger.getLogger("com.denofprogramming.controller.CourseController"); + + @Override + public Course read(Course domain) { + logger.info("Entering method " + this.getClass().getSimpleName() + " read() with " + domain); + final Course newDomain = courseService.read(domain); + logger.info("Exiting method " + this.getClass().getSimpleName() + " read() with " + newDomain); + return newDomain; + } + + @Override + public Course update(Course domain) { + return courseService.update(domain); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/src/main/java/com/denofprogramming/service/CourseService.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/src/main/java/com/denofprogramming/service/CourseService.java new file mode 100644 index 00000000..0a4f9e3d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-courses/src/main/java/com/denofprogramming/service/CourseService.java @@ -0,0 +1,37 @@ +package com.denofprogramming.service; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Service; + +import com.denofprogramming.model.Course; +import com.denofprogramming.repository.CourseRepositoryInterface; + +@Service +public class CourseService implements CourseServiceInterface { + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.service.CourseService"); + + @Inject + private CourseRepositoryInterface courseRepository; + + @Override + public Course read(final Course domain) { + logger.info("Entered method " + this.getClass().getSimpleName() + " read() with " + domain); + + final Course course = courseRepository.read(domain); + + logger.info("Exiting method " + this.getClass().getSimpleName() + " read() with " + course); + return course; + } + + @Override + public Course update(final Course domain) { + return null; + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/academy-registration-integration.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/academy-registration-integration.gradle new file mode 100644 index 00000000..159c5010 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/academy-registration-integration.gradle @@ -0,0 +1,6 @@ +description = 'Teaching Academy Registration Integration Tests' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/src/test/java/com/denofprogramming/config/RegistrationTestConfig.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/src/test/java/com/denofprogramming/config/RegistrationTestConfig.java new file mode 100644 index 00000000..17b30fda --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/src/test/java/com/denofprogramming/config/RegistrationTestConfig.java @@ -0,0 +1,12 @@ +package com.denofprogramming.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("com.denofprogramming") +public class RegistrationTestConfig { + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/src/test/java/com/denofprogramming/controller/RegistrationControllerIT.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/src/test/java/com/denofprogramming/controller/RegistrationControllerIT.java new file mode 100644 index 00000000..a359927a --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-integration/src/test/java/com/denofprogramming/controller/RegistrationControllerIT.java @@ -0,0 +1,44 @@ +package com.denofprogramming.controller; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import javax.inject.Inject; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.denofprogramming.config.RegistrationTestConfig; +import com.denofprogramming.model.Course; +import com.denofprogramming.model.Registration; +import com.denofprogramming.model.Student; + + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes=RegistrationTestConfig.class) +public class RegistrationControllerIT { + + @Inject + private RegistrationControllerInterface registrationController; + + + @Test + public void readRegistrationIT(){ + final Course course = new Course(); + course.setId(Long.valueOf("101")); + final Student student = new Student(); + student.setId(Long.valueOf("999")); + final Registration registration = new Registration(); + registration.setCourse(course); + registration.setStudent(student); + + final Registration returnRegistration = registrationController.read(registration); + assertNotNull("returnRegistration should not be null", returnRegistration); + assertTrue("Registration student name is not correct", returnRegistration.getStudent().getName().equals("Jim Sparrow")); + assertTrue("Registration course name is not correct", returnRegistration.getCourse().getName().equals("Spring101")); + assertNotNull("return Registration Date should not be null", returnRegistration.getRegisteredDate()); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/academy-registration-interface.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/academy-registration-interface.gradle new file mode 100644 index 00000000..d1abccd8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/academy-registration-interface.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Registration Public API' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/controller/RegistrationControllerInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/controller/RegistrationControllerInterface.java new file mode 100644 index 00000000..1917251c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/controller/RegistrationControllerInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.Registration; + +public interface RegistrationControllerInterface extends ControllerInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/model/Registration.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/model/Registration.java new file mode 100644 index 00000000..ac96aa14 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/model/Registration.java @@ -0,0 +1,43 @@ +package com.denofprogramming.model; + +import java.util.Date; + +public class Registration extends DomainObject { + + + private Student student; + private Course course; + private Date registeredDate; + + public Registration(){ + super(); + } + + public Student getStudent() { + return student; + } + public void setStudent(Student student) { + this.student = student; + } + + public Course getCourse() { + return course; + } + public void setCourse(Course course) { + this.course = course; + } + + public Date getRegisteredDate() { + return registeredDate; + } + + public void setRegisteredDate(Date registeredDate) { + this.registeredDate = registeredDate; + } + + @Override + public String toString() { + return this.getClass().getSimpleName() + "[student=" + student + ", course=" + course + "]"; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/repository/RegistrationRepositoryInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/repository/RegistrationRepositoryInterface.java new file mode 100644 index 00000000..cce7bb0f --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/repository/RegistrationRepositoryInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.repository; + +import com.denofprogramming.model.Registration; + +public interface RegistrationRepositoryInterface extends RepositoryInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/service/RegistrationServiceInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/service/RegistrationServiceInterface.java new file mode 100644 index 00000000..3bc481c1 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-interface/src/main/java/com/denofprogramming/service/RegistrationServiceInterface.java @@ -0,0 +1,8 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.Registration; + +public interface RegistrationServiceInterface extends ServiceInterface{ + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-repository/academy-registration-repository.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-repository/academy-registration-repository.gradle new file mode 100644 index 00000000..27c96c3b --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-repository/academy-registration-repository.gradle @@ -0,0 +1,5 @@ +description = 'Teaching Academy Registration Repository' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-repository/src/main/java/com/denofprogramming/repository/RegistrationRepository.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-repository/src/main/java/com/denofprogramming/repository/RegistrationRepository.java new file mode 100644 index 00000000..de124cb2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration-repository/src/main/java/com/denofprogramming/repository/RegistrationRepository.java @@ -0,0 +1,35 @@ +package com.denofprogramming.repository; + +import java.util.Date; +import java.util.logging.Logger; + +import org.springframework.stereotype.Component; + +import com.denofprogramming.model.Registration; + +@Component +public class RegistrationRepository implements RegistrationRepositoryInterface{ + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.repository.RegistrationRepository"); + + @Override + public Registration read(Registration domain) { + logger.info("Entered method " + this.getClass().getSimpleName() + " read() with " + domain); + final Registration registration = new Registration(); + registration.setId(domain.getId()); + registration.setRegisteredDate(new Date()); + logger.info("Exiting method " + this.getClass().getSimpleName() + " read() with " + registration); + return registration; + } + + @Override + public Registration update(Registration domain) { + return null; + } + + + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/academy-registration.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/academy-registration.gradle new file mode 100644 index 00000000..f501d340 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/academy-registration.gradle @@ -0,0 +1,6 @@ +description = 'Teaching Academy Registration Implementation' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/src/main/java/com/denofprogramming/controller/RegistrationController.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/src/main/java/com/denofprogramming/controller/RegistrationController.java new file mode 100644 index 00000000..a90e134a --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/src/main/java/com/denofprogramming/controller/RegistrationController.java @@ -0,0 +1,50 @@ +package com.denofprogramming.controller; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Controller; + +import com.denofprogramming.model.Course; +import com.denofprogramming.model.Registration; +import com.denofprogramming.model.Student; +import com.denofprogramming.service.RegistrationServiceInterface; + +@Controller +public class RegistrationController implements RegistrationControllerInterface{ + + @Inject + private StudentControllerInterface studentController; + + @Inject + private CourseControllerInterface courseController; + + @Inject + private RegistrationServiceInterface registrationService; + + private static final Logger logger = Logger.getLogger("com.denofprogramming.controller.RegistrationController"); + + @Override + public Registration read(Registration domain) { + + logger.info("Entered method " + this.getClass().getSimpleName() + " read() with " + domain); + final Course course = courseController.read(domain.getCourse()); + final Student student = studentController.read(domain.getStudent()); + + final Registration registration = registrationService.read(domain); + registration.setCourse(course); + registration.setStudent(student); + + logger.info("Exiting method " + this.getClass().getSimpleName() + " read() with " + registration); + return registration; + } + + @Override + public Registration update(Registration DomainObject) { + return null; + } + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/src/main/java/com/denofprogramming/service/RegistrationService.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/src/main/java/com/denofprogramming/service/RegistrationService.java new file mode 100644 index 00000000..abb24108 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-registration/src/main/java/com/denofprogramming/service/RegistrationService.java @@ -0,0 +1,40 @@ +package com.denofprogramming.service; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Service; + +import com.denofprogramming.model.Registration; +import com.denofprogramming.repository.RegistrationRepositoryInterface; + +@Service +public class RegistrationService implements RegistrationServiceInterface { + + @Inject + private RegistrationRepositoryInterface registrationRepository; + + private static final Logger logger = Logger.getLogger("com.denofprogramming.service.RegistrationService"); + + + @Override + public Registration read(Registration domain) { + logger.info("Entered method " + this.getClass().getSimpleName() + " read() with " + domain); + + final Registration registration = registrationRepository.read(domain); + + logger.info("Exiting method " + this.getClass().getSimpleName() + " read() with " + registration); + return registration; + } + + + @Override + public Registration update(Registration domainObject) { + return null; + } + + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/build.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/build.gradle new file mode 100644 index 00000000..690422ea --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/build.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Shared code.' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/controller/ControllerInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/controller/ControllerInterface.java new file mode 100644 index 00000000..3ee771d8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/controller/ControllerInterface.java @@ -0,0 +1,11 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.DomainObject; + +public interface ControllerInterface { + + T read(final T DomainObject); + + T update(final T DomainObject); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/model/DomainObject.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/model/DomainObject.java new file mode 100644 index 00000000..70e25c98 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/model/DomainObject.java @@ -0,0 +1,51 @@ +package com.denofprogramming.model; + +public class DomainObject { + + + private Long id; + + + public DomainObject(){ + } + + public Long getId(){ + return id; + } + + public void setId(final Long id){ + this.id = id; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + DomainObject other = (DomainObject) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } + + @Override + public String toString() { + return this.getClass().getSimpleName() + " [id=" + id + "]"; + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/repository/RepositoryInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/repository/RepositoryInterface.java new file mode 100644 index 00000000..932ba38d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/repository/RepositoryInterface.java @@ -0,0 +1,10 @@ +package com.denofprogramming.repository; + +public interface RepositoryInterface { + + + T read(final T domainObject); + + T update(final T domainObject); + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/service/ServiceInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/service/ServiceInterface.java new file mode 100644 index 00000000..cc913d6c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-shared/src/main/java/com/denofprogramming/service/ServiceInterface.java @@ -0,0 +1,13 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.DomainObject; + +public interface ServiceInterface { + + + T read(final T domainObject); + + T update(final T domainObject); + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/academy-student-integration.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/academy-student-integration.gradle new file mode 100644 index 00000000..859fea5c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/academy-student-integration.gradle @@ -0,0 +1,7 @@ +description = 'Teaching Academy Student Integration Tests' + + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/main/java/com/denofprogramming/repository/UserRepositoryIT.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/main/java/com/denofprogramming/repository/UserRepositoryIT.java new file mode 100644 index 00000000..ac09a976 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/main/java/com/denofprogramming/repository/UserRepositoryIT.java @@ -0,0 +1,35 @@ +package com.denofprogramming.repository; + +import java.util.logging.Logger; + +import org.springframework.stereotype.Component; + +import com.denofprogramming.model.User; + +@Component +public class UserRepositoryIT implements UserRepositoryInterface{ + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.repository.UserRepositoryIT"); + + @Override + public User read(User domain) { + logger.info("Entered UserRepositoryIT->read with:" + domain); + + final User newUser = new User(); + newUser.setId(domain.getId()); + newUser.setName("Jim Beam"); + newUser.setAge(46); + + logger.info("Exiting UserRepositoryIT->read with:" + newUser); + return newUser; + } + + @Override + public User update(User domain) { + return null; + } + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/main/resources/log4j.properties b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/main/resources/log4j.properties new file mode 100644 index 00000000..2bc5ded3 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/main/resources/log4j.properties @@ -0,0 +1,9 @@ +log4j.rootLogger=INFO, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +# Print only messages of level DEBUG or above in the package com.denofprogramming +log4j.logger.com.denofprogramming=DEBUG \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/java/com/denofprogramming/config/StudentTestConfig.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/java/com/denofprogramming/config/StudentTestConfig.java new file mode 100644 index 00000000..b08c9c49 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/java/com/denofprogramming/config/StudentTestConfig.java @@ -0,0 +1,12 @@ +package com.denofprogramming.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("com.denofprogramming") +public class StudentTestConfig { + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/java/com/denofprogramming/controller/StudentControllerIT.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/java/com/denofprogramming/controller/StudentControllerIT.java new file mode 100644 index 00000000..34f5a127 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/java/com/denofprogramming/controller/StudentControllerIT.java @@ -0,0 +1,34 @@ +package com.denofprogramming.controller; + +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.denofprogramming.config.StudentTestConfig; +import com.denofprogramming.model.Student; + + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes=StudentTestConfig.class) +public class StudentControllerIT { + + @Inject + private StudentControllerInterface studentController; + + + @Test + public void readStudentTest(){ + final Student domain = new Student(); + final Student returnStudent = studentController.read(domain); + assertNotNull("returnStudent should not be null", returnStudent); + Assert.assertTrue("student name is not correct", returnStudent.getName().equals("Jim Beam")); + Assert.assertTrue("student age is not correct", returnStudent.getAge() == 46); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/resources/spring/test-config.properties b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-integration/src/test/resources/spring/test-config.properties new file mode 100644 index 00000000..e69de29b diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/academy-student-interface.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/academy-student-interface.gradle new file mode 100644 index 00000000..41430f37 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/academy-student-interface.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Student Public API' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/controller/StudentControllerInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/controller/StudentControllerInterface.java new file mode 100644 index 00000000..4f93279e --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/controller/StudentControllerInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.Student; + +public interface StudentControllerInterface extends ControllerInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/model/Student.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/model/Student.java new file mode 100644 index 00000000..2e9519d9 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/model/Student.java @@ -0,0 +1,17 @@ +package com.denofprogramming.model; + +public class Student extends User { + + public Student() { + super(); + } + + public static Student valueOf(final User user) { + final Student student = new Student(); + student.setId(user.getId()); + student.setName(user.getName()); + student.setAge(user.getAge()); + return student; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/service/StudentServiceInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/service/StudentServiceInterface.java new file mode 100644 index 00000000..120b79da --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student-interface/src/main/java/com/denofprogramming/service/StudentServiceInterface.java @@ -0,0 +1,8 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.Student; + +public interface StudentServiceInterface extends ServiceInterface{ + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/academy-student.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/academy-student.gradle new file mode 100644 index 00000000..4a3f181e --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/academy-student.gradle @@ -0,0 +1,6 @@ +description = 'Teaching Academy Student code.' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/src/main/java/com/denofprogramming/controller/StudentController.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/src/main/java/com/denofprogramming/controller/StudentController.java new file mode 100644 index 00000000..f59063b2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/src/main/java/com/denofprogramming/controller/StudentController.java @@ -0,0 +1,58 @@ +package com.denofprogramming.controller; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +import com.denofprogramming.model.Student; +import com.denofprogramming.service.StudentServiceInterface; + +@Controller +public class StudentController implements StudentControllerInterface { + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.controller.StudentController"); + + @Inject + private StudentServiceInterface studentService; + + @RequestMapping(value = "/student", method = RequestMethod.GET) + public ModelAndView student() { + + return new ModelAndView("student", "command", new Student()); + } + + @RequestMapping(value = "/addStudent", method = RequestMethod.POST) + public String addStudent(@ModelAttribute("SpringWeb") final Student student, final ModelMap model) { + + logger.info("Entered StudentController->addStudent with:" + student); + + model.addAttribute("id", student.getId()); + System.out.println(student); + final Student studentDetails = read(student); + + model.addAttribute("name", studentDetails.getName()); + model.addAttribute("age", studentDetails.getAge()); + + logger.info("Exiting StudentController->addStudent with:" + studentDetails); + return "result"; + } + + @Override + public Student read(Student domain) { + return studentService.read(domain); + } + + @Override + public Student update(Student domain) { + return studentService.update(domain); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/src/main/java/com/denofprogramming/service/StudentService.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/src/main/java/com/denofprogramming/service/StudentService.java new file mode 100644 index 00000000..6acfa27d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-student/src/main/java/com/denofprogramming/service/StudentService.java @@ -0,0 +1,34 @@ +package com.denofprogramming.service; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Service; + +import com.denofprogramming.model.Student; +import com.denofprogramming.model.User; + +@Service +public class StudentService implements StudentServiceInterface { + + private static final Logger logger = Logger.getLogger("com.denofprogramming.service.StudentService"); + + @Inject + private UserServiceInterface userService; + + @Override + public Student read(final Student domain) { + logger.info("Entered StudentService->read with:" + domain); + final User user = userService.read(domain); + final Student student = Student.valueOf(user); + logger.info("Exiting StudentService->read with:" + student); + return student; + } + + @Override + public Student update(Student domain) { + return null; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-integration/academy-user-details-integration.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-integration/academy-user-details-integration.gradle new file mode 100644 index 00000000..40fe8c0b --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-integration/academy-user-details-integration.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy User Details Integration Tests' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/academy-user-details-interface.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/academy-user-details-interface.gradle new file mode 100644 index 00000000..0cb0dbc8 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/academy-user-details-interface.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy User Details Public API' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/controller/UserControllerInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/controller/UserControllerInterface.java new file mode 100644 index 00000000..c3fcebe3 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/controller/UserControllerInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.controller; + +import com.denofprogramming.model.User; + +public interface UserControllerInterface extends ControllerInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/model/User.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/model/User.java new file mode 100644 index 00000000..81e706d0 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/model/User.java @@ -0,0 +1,64 @@ +package com.denofprogramming.model; + +public class User extends DomainObject { + + + private String name; + + private int age; + + public User(){ + super(); + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + age; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + User other = (User) obj; + if (age != other.age) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + @Override + public String toString() { + return "User [id=" + getId() + ", name=" + name + ", age=" + age + "]"; + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/repository/UserRepositoryInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/repository/UserRepositoryInterface.java new file mode 100644 index 00000000..f6e9b047 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/repository/UserRepositoryInterface.java @@ -0,0 +1,7 @@ +package com.denofprogramming.repository; + +import com.denofprogramming.model.User; + +public interface UserRepositoryInterface extends RepositoryInterface{ + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/service/UserServiceInterface.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/service/UserServiceInterface.java new file mode 100644 index 00000000..fb474b59 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-interface/src/main/java/com/denofprogramming/service/UserServiceInterface.java @@ -0,0 +1,8 @@ +package com.denofprogramming.service; + +import com.denofprogramming.model.User; + +public interface UserServiceInterface extends ServiceInterface{ + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/academy-user-details-repository.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/academy-user-details-repository.gradle new file mode 100644 index 00000000..aa1c4f83 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/academy-user-details-repository.gradle @@ -0,0 +1,6 @@ +description = 'Teaching Academy User Details Repository' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/main/java/com/denofprogramming/repository/UserRepository.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/main/java/com/denofprogramming/repository/UserRepository.java new file mode 100644 index 00000000..57b003d6 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/main/java/com/denofprogramming/repository/UserRepository.java @@ -0,0 +1,35 @@ +package com.denofprogramming.repository; + +import java.util.logging.Logger; + +import org.springframework.stereotype.Component; + +import com.denofprogramming.model.User; + +@Component +public class UserRepository implements UserRepositoryInterface{ + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.repository.UserRepository"); + + @Override + public User read(User domain) { + logger.info("Entered UserRepository->read with:" + domain); + + final User newUser = new User(); + newUser.setId(domain.getId()); + newUser.setName("Jim Sparrow"); + newUser.setAge(31); + + logger.info("Exiting UserRepository->read with:" + newUser); + return newUser; + } + + @Override + public User update(User domain) { + return null; + } + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/test/java/com/denofprogramming/config/UserTestConfig.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/test/java/com/denofprogramming/config/UserTestConfig.java new file mode 100644 index 00000000..538df86a --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/test/java/com/denofprogramming/config/UserTestConfig.java @@ -0,0 +1,12 @@ +package com.denofprogramming.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan("com.denofprogramming") +public class UserTestConfig { + + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/test/java/com/denofprogramming/controller/UserRepositoryTest.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/test/java/com/denofprogramming/controller/UserRepositoryTest.java new file mode 100644 index 00000000..d2558410 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details-repository/src/test/java/com/denofprogramming/controller/UserRepositoryTest.java @@ -0,0 +1,35 @@ +package com.denofprogramming.controller; + +import static org.junit.Assert.assertNotNull; + +import javax.inject.Inject; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.denofprogramming.config.UserTestConfig; +import com.denofprogramming.model.User; +import com.denofprogramming.repository.UserRepositoryInterface; + + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes=UserTestConfig.class) +public class UserRepositoryTest { + + @Inject + private UserRepositoryInterface userRepository; + + + @Test + public void readStudentTest(){ + final User domain = new User(); + final User returnUser = userRepository.read(domain); + assertNotNull("returnUser should not be null", returnUser); + Assert.assertTrue("user name is not correct", returnUser.getName().equals("Jim Sparrow")); + Assert.assertTrue("user age is not correct", returnUser.getAge() == 31); + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/academy-user-details.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/academy-user-details.gradle new file mode 100644 index 00000000..0cf0df9d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/academy-user-details.gradle @@ -0,0 +1,6 @@ +description = 'Teaching Academy User Details Implementation' + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'javax.inject:javax.inject:1' +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/src/main/java/com/denofprogramming/controller/UserController.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/src/main/java/com/denofprogramming/controller/UserController.java new file mode 100644 index 00000000..92e2b306 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/src/main/java/com/denofprogramming/controller/UserController.java @@ -0,0 +1,22 @@ +package com.denofprogramming.controller; + +import org.springframework.stereotype.Controller; + +import com.denofprogramming.model.User; + +@Controller +public class UserController implements UserControllerInterface{ + + @Override + public User read(User DomainObject) { + // TODO Auto-generated method stub + return null; + } + + @Override + public User update(User DomainObject) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/src/main/java/com/denofprogramming/service/UserService.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/src/main/java/com/denofprogramming/service/UserService.java new file mode 100644 index 00000000..c3801b0e --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-user-details/src/main/java/com/denofprogramming/service/UserService.java @@ -0,0 +1,33 @@ +package com.denofprogramming.service; + +import java.util.logging.Logger; + +import javax.inject.Inject; + +import org.springframework.stereotype.Service; + +import com.denofprogramming.model.User; +import com.denofprogramming.repository.UserRepositoryInterface; + +@Service +public class UserService implements UserServiceInterface { + + @Inject + private UserRepositoryInterface userRepository; + + + private static final Logger logger = Logger.getLogger("com.denofprogramming.service.UserService"); + + @Override + public User read(User domain) { + logger.info("Entered UserService->read with:" + domain); + return userRepository.read(domain); + } + + @Override + public User update(User domain) { + return null; + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-utils/academy-utils.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-utils/academy-utils.gradle new file mode 100644 index 00000000..5625fc15 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-utils/academy-utils.gradle @@ -0,0 +1 @@ +description = 'Teaching Academy Utilities' \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/academy-web.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/academy-web.gradle new file mode 100644 index 00000000..81e0c8dd --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/academy-web.gradle @@ -0,0 +1,25 @@ +plugins { + id 'war' +} + +description = 'Teaching Academy Web Application.' + +ext.tomcatHome = 'C:/software/Apache Software Foundation/apache-tomcat-9.0.1' +ext.tomcatWebapps = "$tomcatHome/webapps" + + +war{ + archiveName = 'academy-web.war' +} + +task deployToTomcat(type: Copy, dependsOn: 'build'){ + from war + into "$tomcatWebapps" +} + +dependencies { + implementation 'org.springframework:spring-webmvc:4.0.3.RELEASE' + implementation 'jstl:jstl:1.2' + implementation 'log4j:log4j:1.2.17' + implementation "javax.servlet:javax.servlet-api:3.0.1" +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/java/com/denofprogramming/config/Config.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/java/com/denofprogramming/config/Config.java new file mode 100644 index 00000000..2ca0ee8d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/java/com/denofprogramming/config/Config.java @@ -0,0 +1,40 @@ +package com.denofprogramming.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.view.JstlView; +import org.springframework.web.servlet.view.UrlBasedViewResolver; + +import com.denofprogramming.controller.StudentController; + +/** + * @author denOfProgramming + * + */ +@Configuration +// Marks this class as configuration +// Specifies which package to scan +@ComponentScan("com.denofprogramming") +// Enables Spring's annotations +@EnableWebMvc +public class Config { + + @Bean + public UrlBasedViewResolver setupViewResolver() { + UrlBasedViewResolver resolver = new UrlBasedViewResolver(); + resolver.setPrefix("/WEB-INF/views/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } + + + @Bean + public StudentController studentController() { + return new StudentController(); + } + + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/java/com/denofprogramming/config/WebInitializer.java b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/java/com/denofprogramming/config/WebInitializer.java new file mode 100644 index 00000000..ad413123 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/java/com/denofprogramming/config/WebInitializer.java @@ -0,0 +1,29 @@ +package com.denofprogramming.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration.Dynamic; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +/** + * @author denOfProgramming + * + */ +public class WebInitializer implements WebApplicationInitializer { + + public void onStartup(ServletContext servletContext) throws ServletException { + + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + ctx.register(Config.class); + ctx.setServletContext(servletContext); + + Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx)); + servlet.addMapping("/"); + servlet.setLoadOnStartup(1); + + } + +} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/resources/log4j.properties b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/resources/log4j.properties new file mode 100644 index 00000000..2bc5ded3 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/resources/log4j.properties @@ -0,0 +1,9 @@ +log4j.rootLogger=INFO, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +# Print only messages of level DEBUG or above in the package com.denofprogramming +log4j.logger.com.denofprogramming=DEBUG \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/registration.jsp b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/registration.jsp new file mode 100644 index 00000000..9a6bd1b2 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/registration.jsp @@ -0,0 +1,36 @@ +<%@ page language="java" contentType="text/html; charset=US-ASCII" + pageEncoding="US-ASCII"%> +<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form"%> + + + + +Insert title here + + + + + + + + + + + + + + + + + +
Student Id:
+
Course Id:
+
+
+ + + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/registrationcreated.jsp b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/registrationcreated.jsp new file mode 100644 index 00000000..fcc6745c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/registrationcreated.jsp @@ -0,0 +1,12 @@ +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" + pageEncoding="ISO-8859-1"%> + + + + +Student Registered + + +Your Student had been Registered. + + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/result.jsp b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/result.jsp new file mode 100644 index 00000000..07ca9763 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/result.jsp @@ -0,0 +1,24 @@ +<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> + + + Spring MVC Form Handling + + + +

Submitted Student Information

+ + + + + + + + + + + + + +
Name${name}
Age${age}
ID${id}
+ + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/student.jsp b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/student.jsp new file mode 100644 index 00000000..13d38de5 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/WEB-INF/views/student.jsp @@ -0,0 +1,31 @@ +<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> + + + Spring MVC Form Handling + + + +

Student Information

+ + +<%-- + + + + + + + --%> + + + + + + + +
Name
Age
id
+ +
+
+ + \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/index.jsp b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/index.jsp new file mode 100644 index 00000000..b8116b4c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/academy-web/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Welcome to the Academy Sample Live!

+ + diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/build.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/build.gradle new file mode 100644 index 00000000..8aec2613 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/build.gradle @@ -0,0 +1,238 @@ +subprojects { + + apply plugin: 'java-library' +// apply plugin: 'findbugs' +// apply plugin: 'pmd' + + + description = 'Teaching Academy Root Project' + group = theGroup + version = theVersion + + sourceCompatibility = theSourceCompatibility + targetCompatibility = theSourceCompatibility + + + repositories { + mavenCentral() + } + + dependencies { + testImplementation 'org.springframework:spring-test:4.0.3.RELEASE' + testImplementation 'junit:junit:4.12' + } + +/* + //FindBugs + + findbugs { + toolVersion = "3.0.1" + ignoreFailures = true + reportLevel = "high" + reportsDir = file("$project.buildDir/findbugsReports") + + } + + tasks.withType(FindBugs) { + reports { + xml.enabled false + html.enabled true + } + } + + + //PMD + + pmd { + ignoreFailures = true + pmdTest.enabled= false + ruleSets = [ + 'java-basic', + 'java-braces', + 'java-clone', + 'java-codesize', + 'java-comments', + 'java-controversial', + 'java-coupling', + 'java-design', + 'java-empty', + 'java-finalizers', + 'java-imports', + 'java-optimizations', + 'java-strictexception', + 'java-strings', + 'java-typeresolution', + 'java-unnecessary', + 'java-unusedcode' + ] + } + + tasks.withType(Pmd){ + reports{ + xml.enabled=true + html.enabled=true + } + } + +*/ + +} + + +project(':academy-audit') { + + dependencies { + api project(':academy-audit-interface') + } +} + + +project(':academy-audit-interface') { + + dependencies { + api project(':academy-shared') + } +} + +project(':academy-audit-repository') { + + dependencies { + api project(':academy-audit-interface') + } +} + + + +project(':academy-courses') { + + dependencies { + api project(':academy-courses-interface') + } +} + +project(':academy-courses-integration') { + + dependencies { + api project(':academy-courses-interface') + } +} + + +project(':academy-courses-interface') { + + dependencies { + api project(':academy-shared') + } +} + + +project(':academy-courses-repository') { + + dependencies { + api project(':academy-courses-interface') + } +} + +project(':academy-registration') { + + dependencies { + api project(':academy-registration-interface') + } +} + + +project(':academy-registration-integration') { + + dependencies { + implementation project(':academy-registration-interface') + implementation project(':academy-registration') + implementation project(':academy-registration-repository') + implementation project(':academy-student') + implementation project(':academy-user-details') + implementation project(':academy-user-details-repository') + implementation project(':academy-courses') + implementation project(':academy-courses-repository') + } +} + + +project(':academy-registration-interface') { + + + dependencies { + api project(':academy-shared') + api project(':academy-courses-interface') + api project(':academy-student-interface') + } +} + +project(':academy-registration-repository') { + + dependencies { + api project(':academy-registration-interface') + } +} + + +project(':academy-student') { + + dependencies { + api project(':academy-student-interface') + } +} + + +project(':academy-student-integration') { + + dependencies { + implementation project(':academy-student') + implementation project(':academy-user-details') + } +} + +project(':academy-student-interface') { + + dependencies { + api project(':academy-user-details-interface') + } +} + + +project(':academy-user-details') { + + dependencies { + api project(':academy-user-details-interface') + } +} + +project(':academy-user-details-interface') { + + dependencies { + api project(':academy-shared') + } +} + +project(':academy-user-details-repository') { + + dependencies { + api project(':academy-user-details-interface') + } +} + + + +project(':academy-web') { + + dependencies { + implementation project(':academy-student') + implementation project(':academy-user-details') + implementation project(':academy-user-details-repository') + } +} + + +task delpoy(dependsOn: ':academy-web:deployToTomcat') { + doLast{ + println ">>>Deploying artifacts" + } +} \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradle.properties b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradle.properties new file mode 100644 index 00000000..a016006c --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradle.properties @@ -0,0 +1,4 @@ +theGroup=com.denofprogramming +theName=academy +theVersion=0.0.2-SNAPSHOT +theSourceCompatibility=1.8 \ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..ec5a5906 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Mar 26 22:01:10 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradlew b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradlew.bat b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/settings.gradle b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/settings.gradle new file mode 100644 index 00000000..4901bc85 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/settings.gradle @@ -0,0 +1,35 @@ +include 'academy-utils' +include 'academy-shared' +include 'academy-web' +include 'academy-audit-interface' +include 'academy-audit' +include 'academy-audit-repository' +include 'academy-audit-integration' + +include 'academy-user-details-interface' +include 'academy-user-details' +include 'academy-user-details-repository' +include 'academy-user-details-integration' + +include 'academy-student-interface' +include 'academy-student' +include 'academy-student-integration' + +include 'academy-courses-interface' +include 'academy-courses' +include 'academy-courses-repository' +include 'academy-courses-integration' + +include 'academy-registration-interface' +include 'academy-registration' +include 'academy-registration-repository' +include 'academy-registration-integration' + + + +rootProject.name = theName + +rootProject.children.each { subproject -> + subproject.buildFileName = "${subproject.name}.gradle" +} + diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/apt/history.apt b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/apt/history.apt new file mode 100644 index 00000000..aebe9267 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/apt/history.apt @@ -0,0 +1,12 @@ + +History of Teaching Academy + + This is the online Academy for denOfprogramming and many others. + +* Some details + + Have a question on available courses ? + + * Lets look here... + + * {{{http://www.denofprogramming.com}the "denOfProgramming Academy" site}} diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/fml/sfaq.fml b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/fml/sfaq.fml new file mode 100644 index 00000000..5618993d --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/fml/sfaq.fml @@ -0,0 +1,35 @@ + + + + Academy Interfaces + + How do I extend the base Academy Interfaces? + +

Easiest in the Eclipse IDE. Just create a new Interface and use the extends key word. + Remember you are extending the base interface found in the academy-share.jar file.

+
+
+ + Do I always need to extend the base interface before I implement it? + +

The short answer is yes! because of the domain type provided in replacement of the generic T extends DomainObject.

+
+
+
+ + + + Reusing the User-details Module + + Can I use the user details module in my other projects? + +

Yes, the modules have been designed per function. So they can be reused if that functionality is required else where.

+
+
+
+ +
\ No newline at end of file diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/site.xml b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/site.xml new file mode 100644 index 00000000..3838523a --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/site.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + org.apache.maven.skins + maven-stylus-skin + 1.5 + + + + diff --git a/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/xhtml/sample.xhtml b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/xhtml/sample.xhtml new file mode 100644 index 00000000..8c8d661e --- /dev/null +++ b/Courses/The-Gradle-Masterclass/gradle-teaching-academy/src/site/xhtml/sample.xhtml @@ -0,0 +1,27 @@ + + +TeachingAcademy: Sample Controller extension + + +
+

A Controller Sample

+ +

The following code is an example of how to extend the top level + interface found in the academy-share.jar file.

+ +
+
+package com.denofprogramming.controller;
+
+import com.denofprogramming.model.Registration;
+
+public interface RegistrationControllerInterface extends ControllerInterface <Registration>>{
+
+}
+
+
+ +

More to come

+
+ + diff --git a/Courses/The-Gradle-Masterclass/mainGradleRequirements/build.gradle b/Courses/The-Gradle-Masterclass/mainGradleRequirements/build.gradle new file mode 100644 index 00000000..df329cda --- /dev/null +++ b/Courses/The-Gradle-Masterclass/mainGradleRequirements/build.gradle @@ -0,0 +1,5 @@ +defaultTasks 'hello' + +task('hello').doLast { + println "Hello World" +} diff --git a/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradle/wrapper/gradle-wrapper.jar b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..87b738cb Binary files /dev/null and b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradle/wrapper/gradle-wrapper.jar differ diff --git a/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradle/wrapper/gradle-wrapper.properties b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..98a9a589 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Wed Mar 25 00:33:13 EET 2020 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradlew b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradlew new file mode 100644 index 00000000..af6708ff --- /dev/null +++ b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +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 +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +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 + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradlew.bat b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradlew.bat new file mode 100644 index 00000000..6d57edc7 --- /dev/null +++ b/Courses/The-Gradle-Masterclass/mainGradleRequirements/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/README.md b/README.md index 7c1249fe..2f69357f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Java -## [Database courses](./Courses) +## [Java courses](./Courses) ## Simple server @@ -31,17 +31,17 @@ https://github.com/SergiOn/istio-mastery https://github.com/rinormaloku/istio-mastery https://medium.com/google-cloud/back-to-microservices-with-istio-p1-827c872daa53 -
+ https://medium.com/google-cloud/back-to-microservices-with-istio-part-2-authentication-authorization-b079f77358ac https://habr.com/ru/company/flant/blog/438426/ -
+ https://habr.com/ru/company/flant/blog/440378/ -
+ https://habr.com/ru/company/flant/blog/443668/ Examples: -
+ https://github.com/SeriyBg/starwars-istio