From b7ad275bdd3b9386798dc99d5234cd03eac45124 Mon Sep 17 00:00:00 2001 From: Doha2012 Date: Sun, 20 Aug 2017 13:26:34 +0200 Subject: [PATCH 01/18] minor fix (#2468) * fix spring config * fix spring config * fix spring config * minor fix * fix spring-boot module * fix pom * upgrade jackson * minor fix --- .../src/main/java/org/baeldung/config/UiApplication.java | 3 +-- .../src/main/java/org/baeldung/config/UiSecurityConfig.java | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiApplication.java b/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiApplication.java index 6e29879cb3..e186046e83 100644 --- a/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiApplication.java +++ b/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiApplication.java @@ -2,12 +2,11 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.Bean; import org.springframework.web.context.request.RequestContextListener; -@EnableOAuth2Sso + @SpringBootApplication public class UiApplication extends SpringBootServletInitializer { diff --git a/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiSecurityConfig.java b/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiSecurityConfig.java index 5dbe9ada34..f9119e20f5 100644 --- a/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiSecurityConfig.java +++ b/spring-security-sso/spring-security-sso-ui/src/main/java/org/baeldung/config/UiSecurityConfig.java @@ -1,9 +1,11 @@ package org.baeldung.config; +import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +@EnableOAuth2Sso @Configuration public class UiSecurityConfig extends WebSecurityConfigurerAdapter { From e6c2fd3bbec4e94e0482ea50ef61013354122143 Mon Sep 17 00:00:00 2001 From: adamd1985 Date: Sun, 20 Aug 2017 15:44:20 +0200 Subject: [PATCH 02/18] Revert "BAEL-812: List of Rules Engines in Java (#2319)" (#2455) This reverts commit dc105bc6f22b2b4ab9d504fdbf0dd9988ba26ec1. --- easy-rules/pom.xml | 15 ---- .../baeldung/easyrules/HelloWorldRule.java | 20 ----- .../java/com/baeldung/easyrules/Launcher.java | 21 ------ openl-tablets/pom.xml | 23 ------ .../com/baeldung/openltablets/model/Case.java | 23 ------ .../baeldung/openltablets/model/Greeting.java | 20 ----- .../com/baeldung/openltablets/model/User.java | 14 ---- .../baeldung/openltablets/rules/IRule.java | 7 -- .../com/baeldung/openltablets/rules/Main.java | 31 -------- .../baeldung/openltablets/rules/Response.java | 24 ------ .../main/resources/openltablets/HelloUser.xls | Bin 25088 -> 0 bytes rulebook/pom.xml | 15 ---- .../com/baeldung/rulebook/HelloWorldRule.java | 17 ----- .../java/com/baeldung/rulebook/Launcher.java | 12 --- .../autowired/TypesOfBeanInjectionSpring.java | 70 ------------------ ...sOfBeanInjectionSpringIntegrationTest.java | 25 ------- 16 files changed, 337 deletions(-) delete mode 100644 easy-rules/pom.xml delete mode 100644 easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java delete mode 100644 easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java delete mode 100644 openl-tablets/pom.xml delete mode 100644 openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java delete mode 100644 openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java delete mode 100644 openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java delete mode 100644 openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java delete mode 100644 openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java delete mode 100644 openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java delete mode 100644 openl-tablets/src/main/resources/openltablets/HelloUser.xls delete mode 100644 rulebook/pom.xml delete mode 100644 rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java delete mode 100644 rulebook/src/main/java/com/baeldung/rulebook/Launcher.java delete mode 100644 spring-core/src/main/java/com/baeldung/autowired/TypesOfBeanInjectionSpring.java delete mode 100644 spring-core/src/test/java/com/baeldung/autowired/TypesOfBeanInjectionSpringIntegrationTest.java diff --git a/easy-rules/pom.xml b/easy-rules/pom.xml deleted file mode 100644 index b74b16f34c..0000000000 --- a/easy-rules/pom.xml +++ /dev/null @@ -1,15 +0,0 @@ - - 4.0.0 - com.baeldung.easyrules - easy-rules - 1.0.0-SNAPSHOT - - - - org.jeasy - easy-rules-core - 3.0.0 - - - \ No newline at end of file diff --git a/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java b/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java deleted file mode 100644 index 5448eabf2a..0000000000 --- a/easy-rules/src/main/java/com/baeldung/easyrules/HelloWorldRule.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.easyrules; - -import org.jeasy.rules.annotation.Action; -import org.jeasy.rules.annotation.Condition; -import org.jeasy.rules.annotation.Rule; - -@Rule(name = "Hello World rule", description = "Always say hello world") -public class HelloWorldRule { - - @Condition - public boolean when() { - return true; - } - - @Action - public void then() throws Exception { - System.out.println("hello world"); - } - -} diff --git a/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java b/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java deleted file mode 100644 index 427e3eace0..0000000000 --- a/easy-rules/src/main/java/com/baeldung/easyrules/Launcher.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.easyrules; - -import org.jeasy.rules.api.Facts; -import org.jeasy.rules.api.Rules; -import org.jeasy.rules.api.RulesEngine; -import org.jeasy.rules.core.DefaultRulesEngine; - -public class Launcher { - public static void main(String... args) { - // create facts - Facts facts = new Facts(); - - // create rules - Rules rules = new Rules(); - rules.register(new HelloWorldRule()); - - // create a rules engine and fire rules on known facts - RulesEngine rulesEngine = new DefaultRulesEngine(); - rulesEngine.fire(rules, facts); - } -} diff --git a/openl-tablets/pom.xml b/openl-tablets/pom.xml deleted file mode 100644 index 77b9f47b38..0000000000 --- a/openl-tablets/pom.xml +++ /dev/null @@ -1,23 +0,0 @@ - - 4.0.0 - com.baeldung.openltablets - openl-tablets - 0.0.1-SNAPSHOT - - UTF-8 - UTF-8 - 1.8 - - - - org.openl - org.openl.core - 5.19.4 - - - org.openl.rules - org.openl.rules - 5.19.4 - - - \ No newline at end of file diff --git a/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java b/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java deleted file mode 100644 index f9f5f4bd5f..0000000000 --- a/openl-tablets/src/main/java/com/baeldung/openltablets/model/Case.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.openltablets.model; - -public class Case { - - private User user; - private int hourOfDay; - - public User getUser() { - return user; - } - - public void setUser(final User user) { - this.user = user; - } - - public int getHourOfDay() { - return hourOfDay; - } - - public void setHourOfDay(final int hourOfDay) { - this.hourOfDay = hourOfDay; - } -} diff --git a/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java b/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java deleted file mode 100644 index 5dc7bcd117..0000000000 --- a/openl-tablets/src/main/java/com/baeldung/openltablets/model/Greeting.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.openltablets.model; - -public enum Greeting { - - GOOD_MORNING("Good Morning"), - GOOD_AFTERNOON("Good Afternoon"), - GOOD_EVENING("Good Evening"), - GOOD_NIGHT("Good Night"); - - private final String literal; - - private Greeting(final String literal) { - this.literal = literal; - } - - public String getLiteral() { - return literal; - } - -} \ No newline at end of file diff --git a/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java b/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java deleted file mode 100644 index 8e45487497..0000000000 --- a/openl-tablets/src/main/java/com/baeldung/openltablets/model/User.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.openltablets.model; - -public class User { - - private String name; - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } -} \ No newline at end of file diff --git a/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java b/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java deleted file mode 100644 index 857a6433ef..0000000000 --- a/openl-tablets/src/main/java/com/baeldung/openltablets/rules/IRule.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.openltablets.rules; - -import com.baeldung.openltablets.model.Case; - -public interface IRule { - void helloUser(final Case aCase, final Response response); -} \ No newline at end of file diff --git a/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java b/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java deleted file mode 100644 index 34f5c48ed1..0000000000 --- a/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Main.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.openltablets.rules; - - -import java.time.LocalDateTime; - -import org.openl.rules.runtime.RulesEngineFactory; -import org.openl.runtime.EngineFactory; - -import com.baeldung.openltablets.model.Case; -import com.baeldung.openltablets.model.User; - -public class Main { - private IRule instance; - - public static void main(String[] args) { - Main rules = new Main(); - User user = new User(); - user.setName("Donald Duck"); - Case aCase = new Case(); - aCase.setUser(user); - aCase.setHourOfDay(23); - rules.process(aCase); - } - - public void process(Case aCase) { - final EngineFactory engineFactory = new RulesEngineFactory(getClass().getClassLoader() - .getResource("openltablets/HelloUser.xls"), IRule.class); - instance = engineFactory.newEngineInstance(); - instance.helloUser(aCase, new Response()); - } -} diff --git a/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java b/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java deleted file mode 100644 index 27fa634866..0000000000 --- a/openl-tablets/src/main/java/com/baeldung/openltablets/rules/Response.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.openltablets.rules; - -import java.util.HashMap; -import java.util.Map; - -public class Response { - private String result; - private Map map = new HashMap<>(); - - public Response() { } - - public String getResult() { - return result; - } - - public void setResult(final String s) { - result = s; - } - - public Map getMap() { - return map; - } - -} diff --git a/openl-tablets/src/main/resources/openltablets/HelloUser.xls b/openl-tablets/src/main/resources/openltablets/HelloUser.xls deleted file mode 100644 index 1e85d0ce2de54ddc812ec9639211a313a5024b45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25088 zcmeHv2Ut{B)9~44ft8{(5m8`4P>>?Uf-QiE9YLBEae)O^mt6u2q7lWGh%t&imY66p z8Vh!eVnK}s#S&{2dyR^QSYwI%&78aSvWw(>^Zn2Ne$RWCbN8M(b7tnunVD1WVb7el zzPWOX<1NCvJ|RZrgQ5{J(Smc}856y%2;ss5=07MD3I<3BJpT9k57NM2AgiCU58J`F zF(mABQ%HPBjUbspGKXXV$r4gyNKGJt2@q>YHjr!~*+FUw$sSTONDh#iLvn=F0#Zvz zPLP}-xj+&?a)smusTCx5NFI<{Luv!b6OtFCwvfCb`9Si8g!ZON|3Rw$|5DT#B7=_{ z`XYiz;X9j*0}VI)vImP%H4I~cfR9mukP3Pyz3|Je*6Eu(t8<*5Y)V zz&)FcA<0yZFPdzR(M4R3`|L6EQqX8C1P@PbGhBQ$zVa@^#ME%e4tJ>w6UAhzkT*5D#L31Tt4w`v+c4!z~UgGtztRG zcN}97j^j!wBpgQuKthUl0TIUv#OWoHh_k>=L*cpb&-=&KaRl=J&Q+iM+zTf!Eca_+ zHGeV4@AIY<F)Tz?^{T z0>S^As|S@qNMm~iD7!m{4?5>Uoad3{@NEq<3)CURf4JMy`zDILhu*u>SqUNULq50! z0|xfk5N;^N`-_zV7_t;@D-Dav6H!EoG~X1VzU_Hv4pTn$v=4c03a2V~Y?+LC++tqf7uHQ~fTYcgPL!BHjvW@g_3(GWFfc6t38aVA%x zHeXe{#*`CIbtQ&T9rYFfUW^#lAHm>|_9_Vt(9mkX0Sp2(l=?G>q1LcLj88sF!|tOP z-9CcBAzeSxT8ymqw}lJw$1p})k^vUnRgGcE>K6e-S}{onJCM^p^5J|;Cf-Leu7aI? ztX&+i6{Vf(=>Y+?MYZ?U@Hw$CKT8K&6%hf6Cw+-C&kzs^L${118bcmUk%;}t!ISm;D^F0s4I&X2*GB@fV4P< zglKrSht(9U_0&97^_3#1>Qc^{dN-AG)|U!Uiu$S$ARGfFg}+c0)DOoHrVrl`9I5KV z|Gy09pz*0MMxQv#pnBM@EZ}`h^ELb) zg`cOBO9*a^J>YCmm;OGAUl+c^0Gy#;7k`@pd`6#j@tOAGZjf%f7(L?-k*=H@DSZw^ zGYYQ-1bV6BMq9mboK@@6Vfr0+s3?57wY9yuJ?N9MXPhtSqmQd^3J3i&dS>*`foQA` zA9uAVoE6`2cCQbPs{(y+2NnE0T{OTZ7}H+dC8PKZ9LO?o+&NRi1+eac>MS@*9^7S9 z;tL7+L`|Oq5ud_YdIofe-9S1EpYUSno5B-?=To2>jyVdCHUJOR2ZvVVtMt6gPBo5j zaE#99Sa&68=WMtNe?t=uK4?izhk-M4)}^n3>(bZ2_0b19{z|w~57-(ir@xX88y;*3 zA2&v!U2J@RefoiJwK4!_^@}l;2k`T;Mj_~Jh70NkR%ak5g)0eZ_hVf+B2oNkCAyBB zu;;7Rvv$7-U`eae8w1zai3+aWUx4pvO|_t_2MV_;cLMo!_=5g}b>(5&>#Eb<34A*; z0hhw+YdA484W3iL4HyS2_!LI>CuulvV!N}JDBB)2hL@*pSfC#=jFiZqv=SPWD4XD3& zFwi!DNd3J7{?QO3_4f{j@CHayfA4??G=xa~y@P{510<=xcko@!M~MUm)!#e#vZnz= z>hB%g0c-$~`g;dP!iEs3zjp);BT|3wKrm~FB=z@>o0W%>(fXMVx(;Fbq9men2ntii3YGV1!&KgsIX3S4ZzR)C@Es7s`CLx?Cslu^n6kuD7( zqMke`iLf;cyPQf5>uW!^fFIB5l5S9eXL!1gHo>n zGkC8K&$t8uOYy+f2ePqdvk9!r#;qPUff_c(qO|vSFY0Gw!)6mymrd(>*q{R{TVo<^jKP}de~@N zTGfC*Pi)lB#(~X7kEOM#hmE$SRSl@FuGY_{Ih&0hOY^RWjkcv#4N%-)qMwZ;n~fez zYgZ2&ZA+^fu=mna{cKvW+32yfpnBM7TUynCBR99}XVVhdbgbXf1i+?a11v2tX!ef= z`o@XPMvtYr*TY8J(gK5CY@VjSHO_1{dMwSe9yZ#R78q1nS*f3m3!9A|OY^CRjkcu) z1}QG5>1QKgv(aN|{`IiYwzR;YWe4x;XXDCdqsP+P*TY8J(gK5iJTqG#8$NM^z(;z> zGUxF->yDWmM}-mTK~Ej1f}=4^op70o<0C%fT2?teTEL-DSU!Z`lBDEHWb^prbcu28 z6{aK{4y#B=3LK%609l+T;-HI!a5|_Wifda+)CA71Vj)hyIDo93Ez~f9pQ9p zQxN8%Bv&F7q>2OyqHJ-RI7Rs24v4mpC0a8@QxNST2!(aRSIFRjO79@(byJR!5~OCF0`Ogv{q!!0}z^HTAS9OqUVQ33|=YR0)nY zW&d2a`AD>lhA0FSHc?j=QSBf?$diHq{X{)AL?L{ziF&YzYKIJF2ck|#p`>0Kq7W?D zM7>xffXa8IPfq+dkfJIc>`Qe4p#@_mg z`XJE=sXUvS8QW*=fT-%AvC614K8vesm4V?BT*vtTzRxy>c{!~5`$|(}+1VmF_-TZ$ zF>+eKe>mWY+Z6D^Z1{-aBn*ZTX5xmCLIG=Ql}NY%SH>nD@hjvh=J5r(1dVxs90?>u zN{1of5j@ha&=hbzS-7UaT!Skh!(re}1m;-B9G+qSWuPb*6giI{qFa^I5?pN{Fv$gZ zvz4By3VgT*S4#}5eYM1-kbo3!EK-D$!sg>qFo}|XBUr+~8gHOX4&0M{Jj7@uhz;LN!YzWYZ&*W6%GdY#` zOb*3wUuXj2_t6!=*hJAB1Q5X+Ry^R1Hjlbi4G5VKWF>F_3(G{Xbkwy1ThalBArdFb zm&3Ck1bfE9=9vf!F48pF9-5xf*c>s65sBY8kP2OzkPR#^m^w9+E%VX6mjw;1XX z`B@Se&E(=dV9=Mvpo79%hd~6e$^yBWK@1P6=dswJvntt`lTK*LaZluQ6c5s+ZPWxz zCJwqst{%e~VNGEU(KBu|rNWudwS-rLu>5AI2w*wRa%Cec1z(4bK)DFVhHKN};(%oe zw#^JRNV&5XWf)x8l&$MfW`-97locVXe!2x#hm^Z$QHBwQP1&XnWoC>qK$)3!b1CJn zT9jd!>BQ2iZ5_%u(A3o|Y(tolZsHS4{>1MBqzu z_!kv?iiDI3wuk>d5eOlIu|l~PhW7Esj$|IWt$e=>^C|+40ItB?@ZUx#1Re?zq`Vcv zcOhorp`xM!z6!~bB?_`6C=DiORip~=)8L~3I7x$i6%vFniywTX^e6>NgE9mhtXBo~ z6^bQf3FH+^pf1pb@s9+hDM(ON6~F--(-KH&Kt62=S+r;o0R$4X1OQ+vJ$v>9SqPOU zC};_Bb8{mjtQzC=n=+@(Bctfy=IL-$)UgM`o3Ia%PX`y-)DMez1kaIA2bAWKm^UTL z6YIPR}G2r4sDuI*bC0b<&p9LkI;8V)s!4rqq3`__2 zZjF>8_7TL0a-Fk3PrAps}$cxj@wl$o7`WQU#H+ zY$;TR;g)8@(&VCSsZ1tSl}F@>u-r^pK2V&VAqV-joB{elB9x}*3e!cAmn)5}NGcTgdAT#j6n=_kvT z`(=Sn0RHJiQ7) zn)YZ_Ok82iDnlfZ$f&F+I3vD3o3a3#Y6>=`0RQI`C-4X898v+_o8a3YHr-vo2M)vc zcKA-=+e3l^Z-n0sR2A%Clg*L~hkz31C+`PNXr$HOT{XCGZPq2kyQcl*j;x2}nQ z_jF(JAWk#)P8Djt<>~ ztDAiNV)wp1o}IoZ>|3-nX7y+Hv(g7_?LNCW+okyXvu}gBCpzS{F8r&o@yXmlR~;S~ z%?-X&8Gh-WQQ2mvA>E(ed-JvX?c(jbLpl!J&@Y@nbz8-}^EGSV^s2P);dgvjo0opy zdl#)dIrL!Mo93H;8!77WONX`B1<%Z9*&NzzQIvE#UC`Y3{{F5jifXDa4wdY=Hhb&r z2^~jP4LqQ*8}%~eH`{YnlZHgSoLjtSNTLmk}7GLg^Qtla%y!AwB`708>+%fFv zcW1w?zI5--)J~^v*j-rG-*TwWa#PEhqLY3zcGgbtS<_J3=dlO(HabM;#*X`ZPA9{|vTV$Qz zEQo7zEiQh`kofoO;_m*{uC&$Y#N;D=ZC*`|zNj}R ze6XO?s@`9X-T=h2Oyu3xZ*U;O)_enE-yB~Ol=IVtw;dATI) z)!Oc(yEqm^Ow8&1U|*XM$GvXH@0NFcF~8Dk!`ffGSIxR!z4EomwF7+?Z<-PK_G06L z^6M_UG9&l7nRykp%Uk<+?r@_oZjCSbQQvWP zPAPG>7LA|WdO~`iM=76vJ2&n{O&h_5(&9buo|f;F?JIb9|99E`w~wAI+kZdDdywOe zR(9>yPq?9Y*h%r`P`izj6i?>dnDke*T(xU~NeXTlph8&6u zx)Z+L#xt;J`N|mymJ_G+%!tX}oi=fyw8}Vte33Z$E2FAiMGs~j81FrBk{LfG@10j- z?=Bv;cMrNh=Xvy9n7v?xMY!GS)>piW4z+!fGLhptbHnqVUmuIIE%@Tt*jl5RuXn%m zIIy%_W-_H2DUDy)k>j?1Xu#BVF1LGrdE?{S1m$$csO%0njy5kMczub9oLj+boYrn_8g zvUx-EmGKj1yUwpkzL*%FGx)--LUZ4zSDii`HipK*#6d;fS5zQF3($0y6T+!u`b`tZdJZ?XxhC# zk|U2tc5a;5cJ82^SC&0Z^cpEHk4wDRgH!n~pkG|;a|<&Z7i2V>dbZEHHRip7JXa>X z>bw0n$L+uM`D6O}yzS&dzfBcUQuB#xUrSCK+mD)()^fpv$uDB>KRQ@`e956?a_UTb(M2o$b8p$kDgE%Rl|` zhZXIoFKyCeOi8cu=dQle$760*A2D$pJa@{Gi}9zW9lG>m} zncaR=XmHDx!Am+AaoY$ziZgG^yaVoS9^QRsOu&M#S}pzD^R#EY|LJ2*7c73XcIR1> zg*zvl9Cc=9-)B98laBL-cUZS5^2CO@4>xyue7(xucQEH<L(KCW{m89Vc`8uq+74( zd!-q9r%uM^&mUBIE+_5ertiL++QquDi_Jo}(q=v}RY;#tdUW%uuW z@3lNH_2%WbF49M__;kDkpxD)rhsZ{dZX zdv_gk!n5>1+^EWfqia0}^&8ziYD$NjO|N>`q}R&AY-<-s^);KFvh~HikR(?V>GyL| z{+#?+?&$Q>aQE|H_FQ;dII`P@nAWmEcl}MS-x>Oqu{8GFeb2sky8hIDMA`1CCziGQ zz96sT?y3Fb7ax3iz-ZeGrxDKl#hv?cv!2>7C-*JFjHK(vk0OfCY*Vg1E4W_?wYbw(Islms3lM2YhH}6O@hf| z-RY&}FU8-MK}idkeB$nf_6&`gQ&Wi6BvU!Zjx;;yZ#V7rl(Br7?A&gvxvj6wIJ5D* z(X_iAEIWp{52|@$S?a_0`$D*HiMV|6HV719-=W z@813M4RzBwTwgepWoXd_Xj+$^C0KNST>|V?h^Dqb=u>M=!mh}k)oUs?hvklTC$QDe zro^6NYbagRM~P0j*)-TjprMfu>s@VW>M@Dv{>HG|fSX0eBoSJl1N%ILEQ39{Wm+p= zC?K-{HcJbJc(BVsm|upl()ncwb1v*`zy)og|FYyCPRP7o`0Ez%v6)do~pLcerH}84 zdti4cb6hw>f%bsBvA=slVsfzC4Vc&ySjGdaaOiJU&In$LqxP{3->3G#m*~nIVxq>G zGNg&R#+(UY_JVI!j!Sye-4~|J2!5XiHMpqNMR!F(j-FA)K`0!rj@M#JwaFdui=pvR9Dr9emxxsP$C_CCH8EU_p>B#@;E`oU(kAO*ITVaq=! zC0m>fZvbH65#)$6g;KdVB?plZAWXqmB=9Jd3&x5i5<#*^Aj%h|m zmW>qv@f?u^HjDx6nIe;>im_gf0Nw>4nG~5MHxshq0Ro{kRS+I15M~26c>j`Il%A+x^khCVjjG|p-n;ZS=q1?pDjp%eP-a8BZhX#vAqo2 zE&@00Hvq7|&E%Ck{*V{RQ~U&iuoQW&P$C(})D`6mGqXSlAd{PeZyk_P6m0kpXami{ zB2+AWgQV7|5VVj5Ki-6G!ltK*vvcGE3A|HL=@T~o1#VjJ6x{r}f#HB4`Iw&n{T z9`9eWG|luENwpgY%ZjM~9BcdMr@sTirZm&v%+8uTT3cT;O`cAFJvDhc{cWttGt*y9 zo|*n?@-QLdxHkfY&_f9agTFC3Y{3w^sJH~v z=`84i@4#4zhHCpQOgsLz-$I>#!EbS;hklDek;7qTYN%*b??=2C>eY7{ z!+KIiPx)uUaXLI*`}cm2I2a_r37YDvkC&zcFm9 zc;k0ND&j;kvmuBL#QD4Y8%VanX#W;}^b4JHadZnobNr21fXQNy;qP#u=Az+{lUR}= z%mKI6l%VtWg)=hQu<(-Q2nNbBMZ#2>1_z4uUL5#UX;_HRJ`}KiJKPm&sJIDIWr9d? zO13OVmL?ZOA9?7n=b;ZtE9JUUc62sa~%C1*$agKS6v! A1ONa4 diff --git a/rulebook/pom.xml b/rulebook/pom.xml deleted file mode 100644 index 2a42e36d93..0000000000 --- a/rulebook/pom.xml +++ /dev/null @@ -1,15 +0,0 @@ - - 4.0.0 - com.baeldung.rulebook - rulebook - 1.0.0-SNAPSHOT - - - - com.deliveredtechnologies - rulebook-core - 0.6.2 - - - \ No newline at end of file diff --git a/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java b/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java deleted file mode 100644 index c09772a3c6..0000000000 --- a/rulebook/src/main/java/com/baeldung/rulebook/HelloWorldRule.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.rulebook; - -import com.deliveredtechnologies.rulebook.lang.RuleBookBuilder; -import com.deliveredtechnologies.rulebook.model.RuleBook; - -public class HelloWorldRule { - public RuleBook defineHelloWorldRules() { - - return RuleBookBuilder.create() - .addRule(rule -> rule.withNoSpecifiedFactType() - .then(f -> System.out.print("Hello "))) - .addRule(rule -> rule.withNoSpecifiedFactType() - .then(f -> System.out.println("World"))) - .build(); - - } -} diff --git a/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java b/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java deleted file mode 100644 index 57965457ec..0000000000 --- a/rulebook/src/main/java/com/baeldung/rulebook/Launcher.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.rulebook; - -import com.deliveredtechnologies.rulebook.FactMap; - -public class Launcher { - - public static void main(String[] args) { - HelloWorldRule ruleBook = new HelloWorldRule(); - ruleBook.defineHelloWorldRules() - .run(new FactMap<>()); - } -} diff --git a/spring-core/src/main/java/com/baeldung/autowired/TypesOfBeanInjectionSpring.java b/spring-core/src/main/java/com/baeldung/autowired/TypesOfBeanInjectionSpring.java deleted file mode 100644 index ca6018a21e..0000000000 --- a/spring-core/src/main/java/com/baeldung/autowired/TypesOfBeanInjectionSpring.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung.autowired; - -import java.util.ArrayList; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.stereotype.Service; - -@SpringBootApplication -public class TypesOfBeanInjectionSpring { - private final UserService userService; - - @Autowired // the @Autowired can even be omitted, in case there's only one explicit constructor - public TypesOfBeanInjectionSpring(UserService userService) { - this.userService = userService; - } - - public static void main(String[] args) { - SpringApplication.run(TypesOfBeanInjectionSpring.class, args); - } - - @Bean - CommandLineRunner runIt() { - return args -> { - userService.listUsers() - .stream() - .forEach(System.out::println); - }; - } -} - -class User { - private String name; - - public User(String name) { - this.name = name; - } - - // getters and setters ... - public String getName() { - return this.name; - } - - public String toString() { - return name; - } - -} - -interface UserService { - List listUsers(); -} - -@Service -class UserServiceImpl implements UserService { - - @Override - public List listUsers() { - ArrayList users = new ArrayList<>(3); - users.add(new User("Snoopy")); - users.add(new User("Woodstock")); - users.add(new User("Charlie Brown")); - return users; - } - -} diff --git a/spring-core/src/test/java/com/baeldung/autowired/TypesOfBeanInjectionSpringIntegrationTest.java b/spring-core/src/test/java/com/baeldung/autowired/TypesOfBeanInjectionSpringIntegrationTest.java deleted file mode 100644 index 206a062a57..0000000000 --- a/spring-core/src/test/java/com/baeldung/autowired/TypesOfBeanInjectionSpringIntegrationTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.autowired; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -@RunWith(SpringRunner.class) -@SpringBootTest -public class TypesOfBeanInjectionSpringIntegrationTest { - @Autowired - UserService userService; - - private static final String[] expected = new String[] { "Snoopy", "Woodstock", "Charlie Brown" }; - - @Test - public void givenDI_whenInjectObject_thenUserNamesAreListed() { - Assert.assertArrayEquals(expected, userService.listUsers() - .stream() - .map(User::getName) - .toArray()); - } -} From def5758f0ae642851048fda8b8120b087b76b380 Mon Sep 17 00:00:00 2001 From: Abhinab Kanrar Date: Mon, 21 Aug 2017 16:30:44 +0530 Subject: [PATCH 03/18] easy code added for simplicity (#2473) * moving jmh into libraries module * refactoring jmh * Update pom.xml * manual algorightm * with BM result * fix for space issue * Fixed indentation * change as per suggestion * vavr either * adding unit test and othe rutilities * adding concurrent module * concurrent package description * concurrent package description * Update EitherUnitTest.java * introducing lambda expression * jooby project * jooby project * reducing employee bean content * bootique module * bootique * bootique * undertow module * undertow module * refactoring * using lambda * as per baeldung formatter * easy code added for simplicity --- .../baeldung/undertow/secure/CustomIdentityManager.java | 3 ++- .../java/com/baeldung/undertow/secure/SecureServer.java | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java b/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java index e0984f65a5..16231f036d 100644 --- a/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java +++ b/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java @@ -8,9 +8,10 @@ import java.util.Set; import io.undertow.security.idm.Account; import io.undertow.security.idm.Credential; +import io.undertow.security.idm.IdentityManager; import io.undertow.security.idm.PasswordCredential; -public class CustomIdentityManager implements io.undertow.security.idm.IdentityManager { +public class CustomIdentityManager implements IdentityManager { private final Map users; diff --git a/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java b/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java index 6f520944db..9997883da6 100644 --- a/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java +++ b/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java @@ -29,13 +29,15 @@ public class SecureServer { final IdentityManager idm = new CustomIdentityManager(users); Undertow server = Undertow.builder().addHttpListener(8080, "localhost").setHandler(addSecurity((exchange) -> { - final SecurityContext context = exchange.getSecurityContext(); - exchange.getResponseSender().send("Hello " + context.getAuthenticatedAccount().getPrincipal().getName(), - IoCallback.END_EXCHANGE); + setExchange(exchange); }, idm)).build(); server.start(); + } + private static void setExchange(HttpServerExchange exchange) { + final SecurityContext context = exchange.getSecurityContext(); + exchange.getResponseSender().send("Hello " + context.getAuthenticatedAccount().getPrincipal().getName(),IoCallback.END_EXCHANGE); } private static HttpHandler addSecurity(final HttpHandler toWrap, final IdentityManager identityManager) { From 82c8d8888693e82504a1133fd20d7a37a4854a72 Mon Sep 17 00:00:00 2001 From: Abhinab Kanrar Date: Mon, 21 Aug 2017 17:55:21 +0530 Subject: [PATCH 04/18] simplifying (#2476) * moving jmh into libraries module * refactoring jmh * Update pom.xml * manual algorightm * with BM result * fix for space issue * Fixed indentation * change as per suggestion * vavr either * adding unit test and othe rutilities * adding concurrent module * concurrent package description * concurrent package description * Update EitherUnitTest.java * introducing lambda expression * jooby project * jooby project * reducing employee bean content * bootique module * bootique * bootique * undertow module * undertow module * refactoring * using lambda * as per baeldung formatter * easy code added for simplicity * simpliflying --- .../undertow/socket/SocketServer.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/undertow/src/main/java/com/baeldung/undertow/socket/SocketServer.java b/undertow/src/main/java/com/baeldung/undertow/socket/SocketServer.java index 9e0e065c3a..295586e16f 100644 --- a/undertow/src/main/java/com/baeldung/undertow/socket/SocketServer.java +++ b/undertow/src/main/java/com/baeldung/undertow/socket/SocketServer.java @@ -16,15 +16,7 @@ public class SocketServer { public static void main(String[] args) { Undertow server = Undertow.builder().addHttpListener(8080, "localhost") .setHandler(path().addPrefixPath("/baeldungApp", websocket((exchange, channel) -> { - channel.getReceiveSetter().set(new AbstractReceiveListener() { - @Override - protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) { - final String messageData = message.getData(); - for (WebSocketChannel session : channel.getPeerConnections()) { - WebSockets.sendText(messageData, session, null); - } - } - }); + channel.getReceiveSetter().set(getListener()); channel.resumeReceives(); })).addPrefixPath("/", resource(new ClassPathResourceManager(SocketServer.class.getClassLoader(), SocketServer.class.getPackage())).addWelcomeFiles("index.html"))) @@ -33,4 +25,16 @@ public class SocketServer { server.start(); } + private static AbstractReceiveListener getListener() { + return new AbstractReceiveListener() { + @Override + protected void onFullTextMessage(WebSocketChannel channel, BufferedTextMessage message) { + final String messageData = message.getData(); + for (WebSocketChannel session : channel.getPeerConnections()) { + WebSockets.sendText(messageData, session, null); + } + } + }; + } + } From 84cbc580e5460309f6d7da71fe266e84456ec05c Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Mon, 21 Aug 2017 14:52:31 +0200 Subject: [PATCH 05/18] Undertow refactor (#2462) --- .../com/baeldung/undertow/ftp/FileServer.java | 10 +++++----- .../secure/CustomIdentityManager.java | 7 +------ .../undertow/secure/SecureServer.java | 20 +++++++++---------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/undertow/src/main/java/com/baeldung/undertow/ftp/FileServer.java b/undertow/src/main/java/com/baeldung/undertow/ftp/FileServer.java index 90cad9ebbd..f5cdb827a6 100644 --- a/undertow/src/main/java/com/baeldung/undertow/ftp/FileServer.java +++ b/undertow/src/main/java/com/baeldung/undertow/ftp/FileServer.java @@ -1,19 +1,19 @@ package com.baeldung.undertow.ftp; -import java.nio.file.Paths; - import io.undertow.Undertow; import io.undertow.server.handlers.resource.PathResourceManager; +import java.nio.file.Paths; + import static io.undertow.Handlers.resource; public class FileServer { public static void main(String[] args) { Undertow server = Undertow.builder().addHttpListener(8080, "localhost") - .setHandler(resource(new PathResourceManager(Paths.get(System.getProperty("user.home")), 100)) - .setDirectoryListingEnabled(true)) - .build(); + .setHandler(resource(new PathResourceManager(Paths.get(System.getProperty("user.home")), 100)) + .setDirectoryListingEnabled(true)) + .build(); server.start(); } diff --git a/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java b/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java index 16231f036d..491941261a 100644 --- a/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java +++ b/undertow/src/main/java/com/baeldung/undertow/secure/CustomIdentityManager.java @@ -54,12 +54,7 @@ public class CustomIdentityManager implements IdentityManager { private static final long serialVersionUID = 1L; - private final Principal principal = new Principal() { - @Override - public String getName() { - return id; - } - }; + private final Principal principal = () -> id; @Override public Principal getPrincipal() { diff --git a/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java b/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java index 9997883da6..6532c3ed7c 100644 --- a/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java +++ b/undertow/src/main/java/com/baeldung/undertow/secure/SecureServer.java @@ -1,10 +1,5 @@ package com.baeldung.undertow.secure; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - import io.undertow.Undertow; import io.undertow.io.IoCallback; import io.undertow.security.api.AuthenticationMechanism; @@ -19,6 +14,11 @@ import io.undertow.security.impl.BasicAuthenticationMechanism; import io.undertow.server.HttpHandler; import io.undertow.server.HttpServerExchange; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + public class SecureServer { public static void main(String[] args) { @@ -28,16 +28,16 @@ public class SecureServer { final IdentityManager idm = new CustomIdentityManager(users); - Undertow server = Undertow.builder().addHttpListener(8080, "localhost").setHandler(addSecurity((exchange) -> { - setExchange(exchange); - }, idm)).build(); + Undertow server = Undertow.builder() + .addHttpListener(8080, "localhost") + .setHandler(addSecurity(SecureServer::setExchange, idm)).build(); server.start(); } private static void setExchange(HttpServerExchange exchange) { final SecurityContext context = exchange.getSecurityContext(); - exchange.getResponseSender().send("Hello " + context.getAuthenticatedAccount().getPrincipal().getName(),IoCallback.END_EXCHANGE); + exchange.getResponseSender().send("Hello " + context.getAuthenticatedAccount().getPrincipal().getName(), IoCallback.END_EXCHANGE); } private static HttpHandler addSecurity(final HttpHandler toWrap, final IdentityManager identityManager) { @@ -45,7 +45,7 @@ public class SecureServer { handler = new AuthenticationCallHandler(handler); handler = new AuthenticationConstraintHandler(handler); final List mechanisms = Collections - . singletonList(new BasicAuthenticationMechanism("Baeldung_Realm")); + .singletonList(new BasicAuthenticationMechanism("Baeldung_Realm")); handler = new AuthenticationMechanismsHandler(handler, mechanisms); handler = new SecurityInitialHandler(AuthenticationMode.PRO_ACTIVE, identityManager, handler); return handler; From 6d7fa197dd9982dbcaf0ae73ac43b00fa0ae9187 Mon Sep 17 00:00:00 2001 From: "Eunice A. Obugyei" Date: Mon, 21 Aug 2017 15:55:26 +0000 Subject: [PATCH 06/18] BAEL-1014 [Spring MVC with Kotlin] (#2475) * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Removed unnecessary comment * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] Added Exception test cases * Applied baeldung formatter in Eclipse * Merged from https://github.com/eugenp/tutorials Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Revert "Merged from https://github.com/eugenp/tutorials" This reverts commit 74447a163b9e3f244a2578315fbdb525d20cd16b. * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Introduction to JAX-WS[http://jira.baeldung.com/browse/BAEL-611] * Spring Security for a Java EE Application[http://jira.baeldung.com/browse/BAEL-884] * Updated spring-security version to 4.2.3.RELEASE * Added spring-mvc-kotlin module for http://jira.baeldung.com/browse/BAEL-1014 * Removed dependency for kotlin-reflect --- spring-mvc-kotlin/pom.xml | 5 ----- spring-mvc-kotlin/src/main/webapp/WEB-INF/view/welcome.jsp | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/spring-mvc-kotlin/pom.xml b/spring-mvc-kotlin/pom.xml index 087f02fc68..5375ecae7c 100644 --- a/spring-mvc-kotlin/pom.xml +++ b/spring-mvc-kotlin/pom.xml @@ -23,11 +23,6 @@ kotlin-stdlib-jre8 1.1.4 - - org.jetbrains.kotlin - kotlin-reflect - 1.1.4 - org.springframework diff --git a/spring-mvc-kotlin/src/main/webapp/WEB-INF/view/welcome.jsp b/spring-mvc-kotlin/src/main/webapp/WEB-INF/view/welcome.jsp index bdb6716889..3f68f128bc 100644 --- a/spring-mvc-kotlin/src/main/webapp/WEB-INF/view/welcome.jsp +++ b/spring-mvc-kotlin/src/main/webapp/WEB-INF/view/welcome.jsp @@ -2,6 +2,6 @@ Welcome -

This is the body of the welcome view 2

+

This is the body of the welcome view

\ No newline at end of file From 04fa1782a24f7ca9b257829b677d4ab3d170b1ea Mon Sep 17 00:00:00 2001 From: lor6 Date: Mon, 21 Aug 2017 21:25:12 +0300 Subject: [PATCH 07/18] reladomo example (#2469) * reladomo example * fix formatting * add plugin versions * fix closing streams --- libraries/pom.xml | 100 +++++++++++++++++- .../com/baeldung/reladomo/Department.java | 15 +++ .../reladomo/DepartmentDatabaseObject.java | 4 + .../com/baeldung/reladomo/DepartmentList.java | 25 +++++ .../java/com/baeldung/reladomo/Employee.java | 16 +++ .../reladomo/EmployeeDatabaseObject.java | 4 + .../com/baeldung/reladomo/EmployeeList.java | 25 +++++ .../reladomo/ReladomoApplication.java | 54 ++++++++++ .../reladomo/ReladomoConnectionManager.java | 92 ++++++++++++++++ .../main/resources/ReladomoRuntimeConfig.xml | 6 ++ .../main/resources/reladomo/Department.xml | 11 ++ .../src/main/resources/reladomo/Employee.xml | 9 ++ .../resources/reladomo/ReladomoClassList.xml | 4 + .../com/baeldung/reladomo/ReladomoTest.java | 38 +++++++ .../resources/reladomo/ReladomoTestConfig.xml | 7 ++ .../src/test/resources/reladomo/test-data.txt | 7 ++ 16 files changed, 415 insertions(+), 2 deletions(-) create mode 100644 libraries/src/main/java/com/baeldung/reladomo/Department.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/DepartmentList.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/Employee.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/EmployeeList.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/ReladomoApplication.java create mode 100644 libraries/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java create mode 100644 libraries/src/main/resources/ReladomoRuntimeConfig.xml create mode 100644 libraries/src/main/resources/reladomo/Department.xml create mode 100644 libraries/src/main/resources/reladomo/Employee.xml create mode 100644 libraries/src/main/resources/reladomo/ReladomoClassList.xml create mode 100644 libraries/src/test/java/com/baeldung/reladomo/ReladomoTest.java create mode 100644 libraries/src/test/resources/reladomo/ReladomoTestConfig.xml create mode 100644 libraries/src/test/resources/reladomo/test-data.txt diff --git a/libraries/pom.xml b/libraries/pom.xml index cf77d197a2..e9603b1453 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -105,6 +105,92 @@ + + + + maven-antrun-plugin + 1.8 + + + generateMithra + generate-sources + + run + + + + + + + + + + + + + + + + + + com.goldmansachs.reladomo + reladomogen + ${reladomo.version} + + + + com.goldmansachs.reladomo + reladomo-gen-util + ${reladomo.version} + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + add-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/reladomo + + + + + add-resource + generate-resources + + add-resource + + + + + ${project.build.directory}/generated-db/ + + + + + + + + @@ -497,6 +583,16 @@ gt-swing ${geotools.version}
+ + com.goldmansachs.reladomo + reladomo + ${reladomo.version} + + + com.goldmansachs.reladomo + reladomo-test-util + ${reladomo.version} + @@ -563,6 +659,6 @@ 0.6.5 0.9.0 15.2 + 16.5.1 - - + \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/reladomo/Department.java b/libraries/src/main/java/com/baeldung/reladomo/Department.java new file mode 100644 index 0000000000..d26ddafbf4 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/Department.java @@ -0,0 +1,15 @@ +package com.baeldung.reladomo; + +public class Department extends DepartmentAbstract { + public Department() { + super(); + // You must not modify this constructor. Mithra calls this internally. + // You can call this constructor. You can also add new constructors. + } + + public Department(long id, String name) { + super(); + this.setId(id); + this.setName(name); + } +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java b/libraries/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java new file mode 100644 index 0000000000..4cfb5cb055 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java @@ -0,0 +1,4 @@ +package com.baeldung.reladomo; +public class DepartmentDatabaseObject extends DepartmentDatabaseObjectAbstract +{ +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/DepartmentList.java b/libraries/src/main/java/com/baeldung/reladomo/DepartmentList.java new file mode 100644 index 0000000000..edad6bc1f4 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/DepartmentList.java @@ -0,0 +1,25 @@ +package com.baeldung.reladomo; +import com.gs.fw.finder.Operation; +import java.util.*; +public class DepartmentList extends DepartmentListAbstract +{ + public DepartmentList() + { + super(); + } + + public DepartmentList(int initialSize) + { + super(initialSize); + } + + public DepartmentList(Collection c) + { + super(c); + } + + public DepartmentList(Operation operation) + { + super(operation); + } +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/Employee.java b/libraries/src/main/java/com/baeldung/reladomo/Employee.java new file mode 100644 index 0000000000..519e841282 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/Employee.java @@ -0,0 +1,16 @@ +package com.baeldung.reladomo; +public class Employee extends EmployeeAbstract +{ + public Employee() + { + super(); + // You must not modify this constructor. Mithra calls this internally. + // You can call this constructor. You can also add new constructors. + } + + public Employee(long id, String name){ + super(); + this.setId(id); + this.setName(name); + } +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java b/libraries/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java new file mode 100644 index 0000000000..407049f342 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java @@ -0,0 +1,4 @@ +package com.baeldung.reladomo; +public class EmployeeDatabaseObject extends EmployeeDatabaseObjectAbstract +{ +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/EmployeeList.java b/libraries/src/main/java/com/baeldung/reladomo/EmployeeList.java new file mode 100644 index 0000000000..4e759898c3 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/EmployeeList.java @@ -0,0 +1,25 @@ +package com.baeldung.reladomo; +import com.gs.fw.finder.Operation; +import java.util.*; +public class EmployeeList extends EmployeeListAbstract +{ + public EmployeeList() + { + super(); + } + + public EmployeeList(int initialSize) + { + super(initialSize); + } + + public EmployeeList(Collection c) + { + super(c); + } + + public EmployeeList(Operation operation) + { + super(operation); + } +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/ReladomoApplication.java b/libraries/src/main/java/com/baeldung/reladomo/ReladomoApplication.java new file mode 100644 index 0000000000..c6b242d3ae --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/ReladomoApplication.java @@ -0,0 +1,54 @@ +package com.baeldung.reladomo; + +import java.io.InputStream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.gs.fw.common.mithra.MithraManager; +import com.gs.fw.common.mithra.MithraManagerProvider; + +public class ReladomoApplication { + + public static void main(String[] args) { + + try { + ReladomoConnectionManager.getInstance().createTables(); + } catch (Exception e1) { + e1.printStackTrace(); + } + + MithraManager mithraManager = MithraManagerProvider.getMithraManager(); + mithraManager.setTransactionTimeout(120); + + try (InputStream is = ReladomoApplication.class.getClassLoader().getResourceAsStream("ReladomoRuntimeConfig.xml")) { + MithraManagerProvider.getMithraManager().readConfiguration(is); + + Department department = new Department(1, "IT"); + Employee employee = new Employee(1, "John"); + department.getEmployees().add(employee); + department.cascadeInsert(); + + Department depFound = DepartmentFinder.findByPrimaryKey(1); + System.out.println("Department Name:" + department.getName()); + + Employee empFound = EmployeeFinder.findOne(EmployeeFinder.name().eq("John")); + System.out.println("Employee Id:" + empFound.getId()); + empFound.setName("Steven"); + empFound.delete(); + Department depDetached = DepartmentFinder.findByPrimaryKey(1).getDetachedCopy(); + + mithraManager.executeTransactionalCommand(tx -> { + Department dep = new Department(2, "HR"); + Employee emp = new Employee(2, "Jim"); + dep.getEmployees().add(emp); + dep.cascadeInsert(); + return null; + }); + + } catch (java.io.IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/libraries/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java b/libraries/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java new file mode 100644 index 0000000000..66a8f9ff99 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java @@ -0,0 +1,92 @@ +package com.baeldung.reladomo; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.TimeZone; +import java.util.stream.Stream; + +import org.h2.tools.RunScript; + +import com.gs.fw.common.mithra.bulkloader.BulkLoader; +import com.gs.fw.common.mithra.bulkloader.BulkLoaderException; +import com.gs.fw.common.mithra.connectionmanager.SourcelessConnectionManager; +import com.gs.fw.common.mithra.connectionmanager.XAConnectionManager; +import com.gs.fw.common.mithra.databasetype.DatabaseType; +import com.gs.fw.common.mithra.databasetype.H2DatabaseType; + +public class ReladomoConnectionManager implements SourcelessConnectionManager { + + private static ReladomoConnectionManager instance; + + private XAConnectionManager xaConnectionManager; + + private final String databaseName = "myDb"; + + public static synchronized ReladomoConnectionManager getInstance() { + if (instance == null) { + instance = new ReladomoConnectionManager(); + } + return instance; + } + + private ReladomoConnectionManager() { + this.createConnectionManager(); + } + + private XAConnectionManager createConnectionManager() { + xaConnectionManager = new XAConnectionManager(); + xaConnectionManager.setDriverClassName("org.h2.Driver"); + xaConnectionManager.setJdbcConnectionString("jdbc:h2:mem:" + databaseName); + xaConnectionManager.setJdbcUser("sa"); + xaConnectionManager.setJdbcPassword(""); + xaConnectionManager.setPoolName("My Connection Pool"); + xaConnectionManager.setInitialSize(1); + xaConnectionManager.setPoolSize(10); + xaConnectionManager.initialisePool(); + return xaConnectionManager; + } + + @Override + public BulkLoader createBulkLoader() throws BulkLoaderException { + return null; + } + + @Override + public Connection getConnection() { + return xaConnectionManager.getConnection(); + } + + @Override + public DatabaseType getDatabaseType() { + return H2DatabaseType.getInstance(); + } + + @Override + public TimeZone getDatabaseTimeZone() { + return TimeZone.getDefault(); + } + + @Override + public String getDatabaseIdentifier() { + return databaseName; + } + + public void createTables() throws Exception { + Path ddlPath = Paths.get(ClassLoader.getSystemResource("sql").toURI()); + + try (Connection conn = xaConnectionManager.getConnection(); Stream list = Files.list(ddlPath);) { + list.forEach(path -> { + try { + RunScript.execute(conn, Files.newBufferedReader(path)); + } catch (SQLException | IOException exc) { + exc.printStackTrace(); + } + }); + } + } + +} diff --git a/libraries/src/main/resources/ReladomoRuntimeConfig.xml b/libraries/src/main/resources/ReladomoRuntimeConfig.xml new file mode 100644 index 0000000000..7181e75406 --- /dev/null +++ b/libraries/src/main/resources/ReladomoRuntimeConfig.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/libraries/src/main/resources/reladomo/Department.xml b/libraries/src/main/resources/reladomo/Department.xml new file mode 100644 index 0000000000..a284965cd6 --- /dev/null +++ b/libraries/src/main/resources/reladomo/Department.xml @@ -0,0 +1,11 @@ + + com.baeldung.reladomo + Department + departments + + + + + Employee.departmentId = this.id + + \ No newline at end of file diff --git a/libraries/src/main/resources/reladomo/Employee.xml b/libraries/src/main/resources/reladomo/Employee.xml new file mode 100644 index 0000000000..00e360bc67 --- /dev/null +++ b/libraries/src/main/resources/reladomo/Employee.xml @@ -0,0 +1,9 @@ + + com.baeldung.reladomo + Employee + employees + + + + + \ No newline at end of file diff --git a/libraries/src/main/resources/reladomo/ReladomoClassList.xml b/libraries/src/main/resources/reladomo/ReladomoClassList.xml new file mode 100644 index 0000000000..99118a745d --- /dev/null +++ b/libraries/src/main/resources/reladomo/ReladomoClassList.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/reladomo/ReladomoTest.java b/libraries/src/test/java/com/baeldung/reladomo/ReladomoTest.java new file mode 100644 index 0000000000..61c29e8aa3 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/reladomo/ReladomoTest.java @@ -0,0 +1,38 @@ +package com.baeldung.reladomo; + +import static org.junit.Assert.*; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.gs.fw.common.mithra.test.ConnectionManagerForTests; +import com.gs.fw.common.mithra.test.MithraTestResource; + +public class ReladomoTest { + private MithraTestResource mithraTestResource; + + @Before + public void setUp() throws Exception { + this.mithraTestResource = new MithraTestResource("reladomo/ReladomoTestConfig.xml"); + + final ConnectionManagerForTests connectionManager = ConnectionManagerForTests.getInstanceForDbName("testDb"); + this.mithraTestResource.createSingleDatabase(connectionManager); + + mithraTestResource.addTestDataToDatabase("reladomo/test-data.txt", connectionManager); + + this.mithraTestResource.setUp(); + } + + @Test + public void whenGetTestData_thenOk() { + Employee employee = EmployeeFinder.findByPrimaryKey(1); + assertEquals(employee.getName(), "Paul"); + } + + @After + public void tearDown() throws Exception { + this.mithraTestResource.tearDown(); + } + +} diff --git a/libraries/src/test/resources/reladomo/ReladomoTestConfig.xml b/libraries/src/test/resources/reladomo/ReladomoTestConfig.xml new file mode 100644 index 0000000000..a1951f09b7 --- /dev/null +++ b/libraries/src/test/resources/reladomo/ReladomoTestConfig.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/libraries/src/test/resources/reladomo/test-data.txt b/libraries/src/test/resources/reladomo/test-data.txt new file mode 100644 index 0000000000..8e407278ac --- /dev/null +++ b/libraries/src/test/resources/reladomo/test-data.txt @@ -0,0 +1,7 @@ +class com.baeldung.reladomo.Department +id, name +1, "Marketing" + +class com.baeldung.reladomo.Employee +id, name +1, "Paul" \ No newline at end of file From 706b3d6c676e198707d00f0febc51c1180c788d0 Mon Sep 17 00:00:00 2001 From: Graham Cox Date: Mon, 21 Aug 2017 20:01:41 +0100 Subject: [PATCH 08/18] Example for a GraphQL Application in Spring Boot (#2477) --- spring-boot/pom.xml | 16 +++++ .../java/com/baeldung/graphql/Author.java | 31 ++++++++++ .../java/com/baeldung/graphql/AuthorDao.java | 18 ++++++ .../com/baeldung/graphql/AuthorResolver.java | 17 ++++++ .../graphql/GraphqlConfiguration.java | 59 +++++++++++++++++++ .../java/com/baeldung/graphql/Mutation.java | 25 ++++++++ .../main/java/com/baeldung/graphql/Post.java | 49 +++++++++++++++ .../java/com/baeldung/graphql/PostDao.java | 29 +++++++++ .../com/baeldung/graphql/PostResolver.java | 17 ++++++ .../main/java/com/baeldung/graphql/Query.java | 17 ++++++ .../org/baeldung/boot/DemoApplication.java | 3 + .../src/main/resources/graphql/blog.graphqls | 24 ++++++++ 12 files changed, 305 insertions(+) create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/Author.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/AuthorDao.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/AuthorResolver.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/GraphqlConfiguration.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/Mutation.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/Post.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/PostDao.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/PostResolver.java create mode 100644 spring-boot/src/main/java/com/baeldung/graphql/Query.java create mode 100644 spring-boot/src/main/resources/graphql/blog.graphqls diff --git a/spring-boot/pom.xml b/spring-boot/pom.xml index 0cf7df86cd..9d44de64a3 100644 --- a/spring-boot/pom.xml +++ b/spring-boot/pom.xml @@ -40,6 +40,22 @@ spring-boot-starter-security + + com.graphql-java + graphql-spring-boot-starter + 3.6.0 + + + com.graphql-java + graphiql-spring-boot-starter + 3.6.0 + + + com.graphql-java + graphql-java-tools + 3.2.0 + + org.springframework.boot spring-boot-starter-tomcat diff --git a/spring-boot/src/main/java/com/baeldung/graphql/Author.java b/spring-boot/src/main/java/com/baeldung/graphql/Author.java new file mode 100644 index 0000000000..11e927c564 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/Author.java @@ -0,0 +1,31 @@ +package com.baeldung.graphql; + +public class Author { + private String id; + private String name; + private String thumbnail; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getThumbnail() { + return thumbnail; + } + + public void setThumbnail(String thumbnail) { + this.thumbnail = thumbnail; + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/AuthorDao.java b/spring-boot/src/main/java/com/baeldung/graphql/AuthorDao.java new file mode 100644 index 0000000000..522732faeb --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/AuthorDao.java @@ -0,0 +1,18 @@ +package com.baeldung.graphql; + +import java.util.List; +import java.util.Optional; + +public class AuthorDao { + private List authors; + + public AuthorDao(List authors) { + this.authors = authors; + } + + public Optional getAuthor(String id) { + return authors.stream() + .filter(author -> id.equals(author.getId())) + .findFirst(); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/AuthorResolver.java b/spring-boot/src/main/java/com/baeldung/graphql/AuthorResolver.java new file mode 100644 index 0000000000..982c6cebc1 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/AuthorResolver.java @@ -0,0 +1,17 @@ +package com.baeldung.graphql; + +import java.util.List; + +import com.coxautodev.graphql.tools.GraphQLResolver; + +public class AuthorResolver implements GraphQLResolver { + private PostDao postDao; + + public AuthorResolver(PostDao postDao) { + this.postDao = postDao; + } + + public List getPosts(Author author) { + return postDao.getAuthorPosts(author.getId()); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/GraphqlConfiguration.java b/spring-boot/src/main/java/com/baeldung/graphql/GraphqlConfiguration.java new file mode 100644 index 0000000000..a7a864cf96 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/GraphqlConfiguration.java @@ -0,0 +1,59 @@ +package com.baeldung.graphql; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class GraphqlConfiguration { + @Bean + public PostDao postDao() { + List posts = new ArrayList<>(); + for (int postId = 0; postId < 10; ++postId) { + for (int authorId = 0; authorId < 10; ++authorId) { + Post post = new Post(); + post.setId("Post" + authorId + postId); + post.setTitle("Post " + authorId + ":" + postId); + post.setText("Post " + postId + " + by author " + authorId); + post.setAuthorId("Author" + authorId); + posts.add(post); + } + } + return new PostDao(posts); + } + + @Bean + public AuthorDao authorDao() { + List authors = new ArrayList<>(); + for (int authorId = 0; authorId < 10; ++authorId) { + Author author = new Author(); + author.setId("Author" + authorId); + author.setName("Author " + authorId); + author.setThumbnail("http://example.com/authors/" + authorId); + authors.add(author); + } + return new AuthorDao(authors); + } + + @Bean + public PostResolver postResolver(AuthorDao authorDao) { + return new PostResolver(authorDao); + } + + @Bean + public AuthorResolver authorResolver(PostDao postDao) { + return new AuthorResolver(postDao); + } + + @Bean + public Query query(PostDao postDao) { + return new Query(postDao); + } + + @Bean + public Mutation mutation(PostDao postDao) { + return new Mutation(postDao); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/Mutation.java b/spring-boot/src/main/java/com/baeldung/graphql/Mutation.java new file mode 100644 index 0000000000..0e16e3c8b7 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/Mutation.java @@ -0,0 +1,25 @@ +package com.baeldung.graphql; + +import java.util.UUID; + +import com.coxautodev.graphql.tools.GraphQLMutationResolver; + +public class Mutation implements GraphQLMutationResolver { + private PostDao postDao; + + public Mutation(PostDao postDao) { + this.postDao = postDao; + } + + public Post writePost(String title, String text, String category, String author) { + Post post = new Post(); + post.setId(UUID.randomUUID().toString()); + post.setTitle(title); + post.setText(text); + post.setCategory(category); + post.setAuthorId(author); + postDao.savePost(post); + + return post; + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/Post.java b/spring-boot/src/main/java/com/baeldung/graphql/Post.java new file mode 100644 index 0000000000..14d3084841 --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/Post.java @@ -0,0 +1,49 @@ +package com.baeldung.graphql; + +public class Post { + private String id; + private String title; + private String text; + private String category; + private String authorId; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getAuthorId() { + return authorId; + } + + public void setAuthorId(String authorId) { + this.authorId = authorId; + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/PostDao.java b/spring-boot/src/main/java/com/baeldung/graphql/PostDao.java new file mode 100644 index 0000000000..f8d243ee3a --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/PostDao.java @@ -0,0 +1,29 @@ +package com.baeldung.graphql; + +import java.util.List; +import java.util.stream.Collectors; + +public class PostDao { + private List posts; + + public PostDao(List posts) { + this.posts = posts; + } + + public List getRecentPosts(int count, int offset) { + return posts.stream() + .skip(offset) + .limit(count) + .collect(Collectors.toList()); + } + + public List getAuthorPosts(String author) { + return posts.stream() + .filter(post -> author.equals(post.getAuthorId())) + .collect(Collectors.toList()); + } + + public void savePost(Post post) { + posts.add(0, post); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/PostResolver.java b/spring-boot/src/main/java/com/baeldung/graphql/PostResolver.java new file mode 100644 index 0000000000..dbfde330ea --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/PostResolver.java @@ -0,0 +1,17 @@ +package com.baeldung.graphql; + +import java.util.Optional; + +import com.coxautodev.graphql.tools.GraphQLResolver; + +public class PostResolver implements GraphQLResolver { + private AuthorDao authorDao; + + public PostResolver(AuthorDao authorDao) { + this.authorDao = authorDao; + } + + public Optional getAuthor(Post post) { + return authorDao.getAuthor(post.getAuthorId()); + } +} diff --git a/spring-boot/src/main/java/com/baeldung/graphql/Query.java b/spring-boot/src/main/java/com/baeldung/graphql/Query.java new file mode 100644 index 0000000000..7bb625798c --- /dev/null +++ b/spring-boot/src/main/java/com/baeldung/graphql/Query.java @@ -0,0 +1,17 @@ +package com.baeldung.graphql; + +import java.util.List; + +import com.coxautodev.graphql.tools.GraphQLQueryResolver; + +public class Query implements GraphQLQueryResolver { + private PostDao postDao; + + public Query(PostDao postDao) { + this.postDao = postDao; + } + + public List recentPosts(int count, int offset) { + return postDao.getRecentPosts(count, offset); + } +} diff --git a/spring-boot/src/main/java/org/baeldung/boot/DemoApplication.java b/spring-boot/src/main/java/org/baeldung/boot/DemoApplication.java index 2d83b650ec..5de4134739 100644 --- a/spring-boot/src/main/java/org/baeldung/boot/DemoApplication.java +++ b/spring-boot/src/main/java/org/baeldung/boot/DemoApplication.java @@ -1,11 +1,14 @@ package org.baeldung.boot; +import com.baeldung.graphql.GraphqlConfiguration; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import com.baeldung.autoconfiguration.MySQLAutoconfiguration; +import org.springframework.context.annotation.Import; @SpringBootApplication(exclude=MySQLAutoconfiguration.class) +@Import(GraphqlConfiguration.class) public class DemoApplication { public static void main(String[] args) { diff --git a/spring-boot/src/main/resources/graphql/blog.graphqls b/spring-boot/src/main/resources/graphql/blog.graphqls new file mode 100644 index 0000000000..aa0c8757e9 --- /dev/null +++ b/spring-boot/src/main/resources/graphql/blog.graphqls @@ -0,0 +1,24 @@ +type Post { + id: ID! + title: String! + text: String! + category: String + author: Author +} + +type Author { + id: ID! + name: String! + thumbnail: String + posts: [Post]! +} + +# The Root Query for the application +type Query { + recentPosts(count: Int, offset: Int): [Post]! +} + +# The Root Mutation for the application +type Mutation { + writePost(title: String!, text: String!, category: String, author: String!) : Post! +} From 802c0b09e044c7047b10e349cf8e31c844c1913e Mon Sep 17 00:00:00 2001 From: Tian Baoqiang Date: Mon, 21 Aug 2017 15:58:37 -0500 Subject: [PATCH 09/18] #BAEL-1025 (#2445) --- ratpack/pom.xml | 22 ++++++++ .../hystrix/HystrixAsyncHttpCommand.java | 54 ++++++++++++++++++ .../hystrix/HystrixReactiveHttpCommand.java | 44 +++++++++++++++ .../hystrix/HystrixSyncHttpCommand.java | 55 +++++++++++++++++++ .../baeldung/hystrix/RatpackHystrixApp.java | 30 ++++++++++ .../RatpackHystrixAppFallbackLiveTest.java | 50 +++++++++++++++++ .../hystrix/RatpackHystrixAppLiveTest.java | 50 +++++++++++++++++ 7 files changed, 305 insertions(+) create mode 100644 ratpack/src/main/java/com/baeldung/hystrix/HystrixAsyncHttpCommand.java create mode 100644 ratpack/src/main/java/com/baeldung/hystrix/HystrixReactiveHttpCommand.java create mode 100644 ratpack/src/main/java/com/baeldung/hystrix/HystrixSyncHttpCommand.java create mode 100644 ratpack/src/main/java/com/baeldung/hystrix/RatpackHystrixApp.java create mode 100644 ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppFallbackLiveTest.java create mode 100644 ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppLiveTest.java diff --git a/ratpack/pom.xml b/ratpack/pom.xml index 7a75ec50b7..3f953b3ed0 100644 --- a/ratpack/pom.xml +++ b/ratpack/pom.xml @@ -40,16 +40,38 @@ ratpack-hikari ${ratpack.version} + + io.ratpack + ratpack-hystrix + ${ratpack.version} + + + io.ratpack + ratpack-rx + ${ratpack.version} + io.ratpack ratpack-test ${ratpack.version} + test com.h2database h2 1.4.193 + + + org.apache.httpcomponents + httpclient + 4.5.3 + + + org.apache.httpcomponents + httpcore + 4.4.6 + diff --git a/ratpack/src/main/java/com/baeldung/hystrix/HystrixAsyncHttpCommand.java b/ratpack/src/main/java/com/baeldung/hystrix/HystrixAsyncHttpCommand.java new file mode 100644 index 0000000000..a1a19150c3 --- /dev/null +++ b/ratpack/src/main/java/com/baeldung/hystrix/HystrixAsyncHttpCommand.java @@ -0,0 +1,54 @@ +package com.baeldung.hystrix; + +import com.netflix.hystrix.HystrixCommand; +import com.netflix.hystrix.HystrixCommandGroupKey; +import com.netflix.hystrix.HystrixCommandProperties; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicHeader; +import org.apache.http.util.EntityUtils; + +import java.net.URI; +import java.util.Collections; + +/** + * @author aiet + */ +public class HystrixAsyncHttpCommand extends HystrixCommand { + + private URI uri; + private RequestConfig requestConfig; + + HystrixAsyncHttpCommand(URI uri, int timeoutMillis) { + super(Setter + .withGroupKey(HystrixCommandGroupKey.Factory.asKey("hystrix-ratpack-async")) + .andCommandPropertiesDefaults(HystrixCommandProperties + .Setter() + .withExecutionTimeoutInMilliseconds(timeoutMillis))); + requestConfig = RequestConfig + .custom() + .setSocketTimeout(timeoutMillis) + .setConnectTimeout(timeoutMillis) + .setConnectionRequestTimeout(timeoutMillis) + .build(); + this.uri = uri; + } + + @Override + protected String run() throws Exception { + return EntityUtils.toString(HttpClientBuilder + .create() + .setDefaultRequestConfig(requestConfig) + .setDefaultHeaders(Collections.singleton(new BasicHeader("User-Agent", "Baeldung Blocking HttpClient"))) + .build() + .execute(new HttpGet(uri)) + .getEntity()); + } + + @Override + protected String getFallback() { + return "eugenp's async fallback profile"; + } + +} diff --git a/ratpack/src/main/java/com/baeldung/hystrix/HystrixReactiveHttpCommand.java b/ratpack/src/main/java/com/baeldung/hystrix/HystrixReactiveHttpCommand.java new file mode 100644 index 0000000000..f9f85c705b --- /dev/null +++ b/ratpack/src/main/java/com/baeldung/hystrix/HystrixReactiveHttpCommand.java @@ -0,0 +1,44 @@ +package com.baeldung.hystrix; + +import com.netflix.hystrix.HystrixCommandGroupKey; +import com.netflix.hystrix.HystrixCommandProperties; +import com.netflix.hystrix.HystrixObservableCommand; +import ratpack.http.client.HttpClient; +import ratpack.rx.RxRatpack; +import rx.Observable; + +import java.net.URI; + +/** + * @author aiet + */ +public class HystrixReactiveHttpCommand extends HystrixObservableCommand { + + private HttpClient httpClient; + private URI uri; + + HystrixReactiveHttpCommand(HttpClient httpClient, URI uri, int timeoutMillis) { + super(Setter + .withGroupKey(HystrixCommandGroupKey.Factory.asKey("hystrix-ratpack-reactive")) + .andCommandPropertiesDefaults(HystrixCommandProperties + .Setter() + .withExecutionTimeoutInMilliseconds(timeoutMillis))); + this.httpClient = httpClient; + this.uri = uri; + } + + @Override + protected Observable construct() { + return RxRatpack.observe(httpClient + .get(uri, requestSpec -> requestSpec.headers(mutableHeaders -> mutableHeaders.add("User-Agent", "Baeldung HttpClient"))) + .map(receivedResponse -> receivedResponse + .getBody() + .getText())); + } + + @Override + protected Observable resumeWithFallback() { + return Observable.just("eugenp's reactive fallback profile"); + } + +} diff --git a/ratpack/src/main/java/com/baeldung/hystrix/HystrixSyncHttpCommand.java b/ratpack/src/main/java/com/baeldung/hystrix/HystrixSyncHttpCommand.java new file mode 100644 index 0000000000..7c848331ca --- /dev/null +++ b/ratpack/src/main/java/com/baeldung/hystrix/HystrixSyncHttpCommand.java @@ -0,0 +1,55 @@ +package com.baeldung.hystrix; + +import com.netflix.hystrix.HystrixCommand; +import com.netflix.hystrix.HystrixCommandGroupKey; +import com.netflix.hystrix.HystrixCommandProperties; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.message.BasicHeader; +import org.apache.http.util.EntityUtils; + +import java.net.URI; +import java.util.Collections; + +/** + * @author aiet + */ +public class HystrixSyncHttpCommand extends HystrixCommand { + + private URI uri; + private RequestConfig requestConfig; + + HystrixSyncHttpCommand(URI uri, int timeoutMillis) { + super(Setter + .withGroupKey(HystrixCommandGroupKey.Factory.asKey("hystrix-ratpack-sync")) + .andCommandPropertiesDefaults(HystrixCommandProperties + .Setter() + .withExecutionTimeoutInMilliseconds(timeoutMillis))); + requestConfig = RequestConfig + .custom() + .setSocketTimeout(timeoutMillis) + .setConnectTimeout(timeoutMillis) + .setConnectionRequestTimeout(timeoutMillis) + .build(); + this.uri = uri; + } + + @Override + protected String run() throws Exception { + HttpGet request = new HttpGet(uri); + return EntityUtils.toString(HttpClientBuilder + .create() + .setDefaultRequestConfig(requestConfig) + .setDefaultHeaders(Collections.singleton(new BasicHeader("User-Agent", "Baeldung Blocking HttpClient"))) + .build() + .execute(request) + .getEntity()); + } + + @Override + protected String getFallback() { + return "eugenp's sync fallback profile"; + } + +} diff --git a/ratpack/src/main/java/com/baeldung/hystrix/RatpackHystrixApp.java b/ratpack/src/main/java/com/baeldung/hystrix/RatpackHystrixApp.java new file mode 100644 index 0000000000..1e4724bd96 --- /dev/null +++ b/ratpack/src/main/java/com/baeldung/hystrix/RatpackHystrixApp.java @@ -0,0 +1,30 @@ +package com.baeldung.hystrix; + +import ratpack.guice.Guice; +import ratpack.http.client.HttpClient; +import ratpack.hystrix.HystrixMetricsEventStreamHandler; +import ratpack.hystrix.HystrixModule; +import ratpack.server.RatpackServer; + +import java.net.URI; + +public class RatpackHystrixApp { + + public static void main(String[] args) throws Exception { + final int timeout = Integer.valueOf(System.getProperty("ratpack.hystrix.timeout")); + final URI eugenGithubProfileUri = new URI("https://api.github.com/users/eugenp"); + + RatpackServer.start(server -> server + .registry(Guice.registry(bindingsSpec -> bindingsSpec.module(new HystrixModule().sse()))) + .handlers(chain -> chain + .get("rx", ctx -> new HystrixReactiveHttpCommand(ctx.get(HttpClient.class), eugenGithubProfileUri, timeout) + .toObservable() + .subscribe(ctx::render)) + .get("async", ctx -> ctx.render(new HystrixAsyncHttpCommand(eugenGithubProfileUri, timeout) + .queue() + .get())) + .get("sync", ctx -> ctx.render(new HystrixSyncHttpCommand(eugenGithubProfileUri, timeout).execute())) + .get("hystrix", new HystrixMetricsEventStreamHandler()))); + + } +} diff --git a/ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppFallbackLiveTest.java b/ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppFallbackLiveTest.java new file mode 100644 index 0000000000..25287a5cbd --- /dev/null +++ b/ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppFallbackLiveTest.java @@ -0,0 +1,50 @@ +package com.baeldung.hystrix; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import ratpack.test.MainClassApplicationUnderTest; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; + +/** + * @author aiet + */ +public class RatpackHystrixAppFallbackLiveTest { + + static MainClassApplicationUnderTest appUnderTest; + + @BeforeClass + public static void setup() { + System.setProperty("ratpack.hystrix.timeout", "10"); + appUnderTest = new MainClassApplicationUnderTest(RatpackHystrixApp.class); + } + + @Test + public void whenFetchReactive_thenGotFallbackProfile() { + assertThat(appUnderTest + .getHttpClient() + .getText("rx"), containsString("reactive fallback profile")); + } + + @Test + public void whenFetchAsync_thenGotFallbackProfile() { + assertThat(appUnderTest + .getHttpClient() + .getText("async"), containsString("async fallback profile")); + } + + @Test + public void whenFetchSync_thenGotFallbackProfile() { + assertThat(appUnderTest + .getHttpClient() + .getText("sync"), containsString("sync fallback profile")); + } + + @AfterClass + public static void clean() { + appUnderTest.close(); + } + +} diff --git a/ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppLiveTest.java b/ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppLiveTest.java new file mode 100644 index 0000000000..843ef68e13 --- /dev/null +++ b/ratpack/src/test/java/com/baeldung/hystrix/RatpackHystrixAppLiveTest.java @@ -0,0 +1,50 @@ +package com.baeldung.hystrix; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import ratpack.test.MainClassApplicationUnderTest; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.junit.Assert.assertThat; + +/** + * @author aiet + */ +public class RatpackHystrixAppLiveTest { + + static MainClassApplicationUnderTest appUnderTest; + + @BeforeClass + public static void setup() { + System.setProperty("ratpack.hystrix.timeout", "5000"); + appUnderTest = new MainClassApplicationUnderTest(RatpackHystrixApp.class); + } + + @Test + public void whenFetchReactive_thenGotEugenProfile() { + assertThat(appUnderTest + .getHttpClient() + .getText("rx"), containsString("www.baeldung.com")); + } + + @Test + public void whenFetchAsync_thenGotEugenProfile() { + assertThat(appUnderTest + .getHttpClient() + .getText("async"), containsString("www.baeldung.com")); + } + + @Test + public void whenFetchSync_thenGotEugenProfile() { + assertThat(appUnderTest + .getHttpClient() + .getText("sync"), containsString("www.baeldung.com")); + } + + @AfterClass + public static void clean() { + appUnderTest.close(); + } + +} From 822e8682b64a41a1d99a4790719d131f114708df Mon Sep 17 00:00:00 2001 From: lor6 Date: Tue, 22 Aug 2017 00:03:12 +0300 Subject: [PATCH 10/18] lambda example (#2480) --- .../LambdaExpressionsIntegrationTest.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 log4j2/src/test/java/com/baeldung/logging/log4j2/tests/LambdaExpressionsIntegrationTest.java diff --git a/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/LambdaExpressionsIntegrationTest.java b/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/LambdaExpressionsIntegrationTest.java new file mode 100644 index 0000000000..a1454c16cc --- /dev/null +++ b/log4j2/src/test/java/com/baeldung/logging/log4j2/tests/LambdaExpressionsIntegrationTest.java @@ -0,0 +1,33 @@ +package com.baeldung.logging.log4j2.tests; + +import java.util.Random; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.Test; + +public class LambdaExpressionsIntegrationTest { + + private static final Logger logger = LogManager.getRootLogger(); + + @Test + public void whenCheckLogMessage_thenOk() { + if (logger.isTraceEnabled()) { + logger.trace("Numer is {}", getRandomNumber()); + } + } + + @Test + public void whenUseLambdaExpression_thenOk() { + logger.trace("Number is {}", () -> getRandomNumber()); + logger.trace("Name is {} and age is {}", () -> getName(), () -> getRandomNumber()); + } + + private int getRandomNumber() { + return (new Random()).nextInt(10); + } + + private String getName() { + return "John"; + } +} From 8c0ce48aaee0bfa5b4cf772db424c9e6828eba87 Mon Sep 17 00:00:00 2001 From: Mansi Date: Tue, 22 Aug 2017 02:38:41 +0530 Subject: [PATCH 11/18] BAEL-1045 Lambda Behave (#2456) * Example Code For Evaluation Article This is an example code for the evaluation article on "Different Types of Bean Injection in Spring" * Added unit tests * Minor changes to application context * Removed code committed for evaluation article * BAEL-944 Demonstrating the problems with new Url pattern matching in Spring 5 * BAEL-944 Demonstrating the problems with new Url pattern matching in Spring 5 * BAEL-944 Exploring the Spring MVC URL Matching Improvements * BAEL-944 Exploring the Spring MVC URL Matching Improvements * BAEL-944 Exploring the Spring MVC URL Matching Improvements * BAEL-944 Code Formatting and solving build issue * BAEL-944 Resolving build issue due to change in Spring version * BAEL-944 Resolving build issue * BAEL-944 Formatting code * BAEL-944 Moving tests to correct package * BAEL-944 Moving tests to correct package * BAEL-944 Replacing @RequestMapping by @GetMapping * BAEL-944 Remove unnecessary attribute name, "value" in annotations * BAEL-79 Intro to Activiti with Spring * BAEL-79 Intro to Activiti with Spring * BAEL-79 Adding activiti module to the parent modules * BAEL-79 Using latest version * BAEL-79 Update Spring boot version that works with Activiti * BAEL-79 Replace RequestMapping with GetMapping * BAEL-79 Use Java 8 Syntax * BAEL-79 Formatting * BAEL-79 changed module name * BAEL-378 A Guide to Activiti with Java * BAEL-79 Fixed unit tests * BAEL-79 Simplified the process * BAEL-79 Fix test cases * BAEL-1045 Lambda Behave * BAEL-1045 Lambda Behave * BAEL-1045 Lambda Behave --- testing/pom.xml | 5 ++ .../com/baeldung/lambdabehave/Calculator.java | 24 +++++++++ .../baeldung/lambdabehave/CalculatorTest.java | 54 +++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 testing/src/main/java/com/baeldung/lambdabehave/Calculator.java create mode 100644 testing/src/test/java/com/baeldung/lambdabehave/CalculatorTest.java diff --git a/testing/pom.xml b/testing/pom.xml index bfd47dbc4a..72ec2b2f0c 100644 --- a/testing/pom.xml +++ b/testing/pom.xml @@ -13,6 +13,11 @@ + + com.insightfullogic + lambda-behave + 0.4 + com.google.guava guava diff --git a/testing/src/main/java/com/baeldung/lambdabehave/Calculator.java b/testing/src/main/java/com/baeldung/lambdabehave/Calculator.java new file mode 100644 index 0000000000..b194dce500 --- /dev/null +++ b/testing/src/main/java/com/baeldung/lambdabehave/Calculator.java @@ -0,0 +1,24 @@ +package com.baeldung.lambdabehave; + +public class Calculator { + + private int x; + private int y; + + Calculator(int x, int y) { + this.x = x; + this.y = y; + } + + public int add() { + return this.x + this.y; + } + + public int divide(int a, int b) { + return a / b; + } + + public int add(int a, int b) { + return a + b; + } +} diff --git a/testing/src/test/java/com/baeldung/lambdabehave/CalculatorTest.java b/testing/src/test/java/com/baeldung/lambdabehave/CalculatorTest.java new file mode 100644 index 0000000000..d179c6eb0e --- /dev/null +++ b/testing/src/test/java/com/baeldung/lambdabehave/CalculatorTest.java @@ -0,0 +1,54 @@ +package com.baeldung.lambdabehave; + +import com.insightfullogic.lambdabehave.JunitSuiteRunner; +import com.insightfullogic.lambdabehave.Suite; +import com.insightfullogic.lambdabehave.generators.Generator; +import com.insightfullogic.lambdabehave.generators.SourceGenerator; +import org.junit.runner.RunWith; + +@RunWith(JunitSuiteRunner.class) +public class CalculatorTest { + + private Calculator calculator; + + { + Suite.describe("Lambda behave example tests", it -> { + + it.isSetupWith(() -> { + calculator = new Calculator(1, 2); + }); + it.should("Add the given numbers", expect -> { + expect.that(calculator.add()).is(3); + }); + it.should("Throw an exception if divide by 0", expect -> { + expect.exception(ArithmeticException.class, () -> { + calculator.divide(1, 0); + }); + }); + it.uses(2, 3, 5) + .and(23, 10, 33) + .toShow("%d + %d = %d", (expect, a, b, c) -> { + expect.that(calculator.add(a, b)).is(c); + }); + it.requires(2) + .example(Generator.asciiStrings()) + .toShow("Reversing a String twice returns the original String", (expect, str) -> { + String same = new StringBuilder(str).reverse() + .reverse() + .toString(); + expect.that(same) + .isEqualTo(str); + }); + it.requires(2) + .withSource(SourceGenerator.deterministicNumbers(5626689007407L)) + .example(Generator.asciiStrings()) + .toShow("Reversing a String twice returns the original String", (expect, str) -> { + String same = new StringBuilder(str).reverse() + .reverse() + .toString(); + expect.that(same) + .isEqualTo(str); + }); + }); + } +} From 8a344330950ecd9c728c80148373be24851fd2f2 Mon Sep 17 00:00:00 2001 From: Grzegorz Piwowarek Date: Tue, 22 Aug 2017 13:13:24 +0200 Subject: [PATCH 12/18] Optimize libraries (#2458) --- .../com/baeldung/chronicle/queue/ChronicleQueue.java | 2 +- ...Test.java => AsyncServiceLongRunningUnitTest.java} | 11 +++++++---- ...ueTest.java => ChronicleQueueIntegrationTest.java} | 2 +- .../{HLLUnitTest.java => HLLLongRunningUnitTest.java} | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) rename libraries/src/test/java/com/baeldung/awaitility/{AsyncServiceUnitTest.java => AsyncServiceLongRunningUnitTest.java} (86%) rename libraries/src/test/java/com/baeldung/chronicle/queue/{ChronicleQueueTest.java => ChronicleQueueIntegrationTest.java} (96%) rename libraries/src/test/java/com/baeldung/hll/{HLLUnitTest.java => HLLLongRunningUnitTest.java} (98%) diff --git a/libraries/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java b/libraries/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java index b7770e0b78..f6bd25c0fe 100644 --- a/libraries/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java +++ b/libraries/src/main/java/com/baeldung/chronicle/queue/ChronicleQueue.java @@ -7,7 +7,7 @@ import net.openhft.chronicle.ExcerptAppender; public class ChronicleQueue { - public static void writeToQueue( + static void writeToQueue( Chronicle chronicle, String stringValue, int intValue, long longValue, double doubleValue) throws IOException { ExcerptAppender appender = chronicle.createAppender(); diff --git a/libraries/src/test/java/com/baeldung/awaitility/AsyncServiceUnitTest.java b/libraries/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningUnitTest.java similarity index 86% rename from libraries/src/test/java/com/baeldung/awaitility/AsyncServiceUnitTest.java rename to libraries/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningUnitTest.java index 43537965f8..d17a7dcf1b 100644 --- a/libraries/src/test/java/com/baeldung/awaitility/AsyncServiceUnitTest.java +++ b/libraries/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningUnitTest.java @@ -11,10 +11,13 @@ import java.util.concurrent.TimeUnit; import static org.awaitility.Awaitility.await; import static org.awaitility.Awaitility.fieldIn; import static org.awaitility.Awaitility.given; +import static org.awaitility.Awaitility.setDefaultPollDelay; +import static org.awaitility.Awaitility.setDefaultPollInterval; +import static org.awaitility.Awaitility.setDefaultTimeout; import static org.awaitility.proxy.AwaitilityClassProxy.to; import static org.hamcrest.Matchers.equalTo; -public class AsyncServiceUnitTest { +public class AsyncServiceLongRunningUnitTest { private AsyncService asyncService; @Before @@ -41,9 +44,9 @@ public class AsyncServiceUnitTest { @Test public void givenAsyncService_whenInitialize_thenInitOccurs_withDefualts() { - Awaitility.setDefaultPollInterval(10, TimeUnit.MILLISECONDS); - Awaitility.setDefaultPollDelay(Duration.ZERO); - Awaitility.setDefaultTimeout(Duration.ONE_MINUTE); + setDefaultPollInterval(10, TimeUnit.MILLISECONDS); + setDefaultPollDelay(Duration.ZERO); + setDefaultTimeout(Duration.ONE_MINUTE); asyncService.initialize(); await().until(asyncService::isInitialized); diff --git a/libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueTest.java b/libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java similarity index 96% rename from libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueTest.java rename to libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java index e64aaed544..9c0a0ac910 100644 --- a/libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueTest.java +++ b/libraries/src/test/java/com/baeldung/chronicle/queue/ChronicleQueueIntegrationTest.java @@ -13,7 +13,7 @@ import net.openhft.chronicle.ChronicleQueueBuilder; import net.openhft.chronicle.ExcerptTailer; import net.openhft.chronicle.tools.ChronicleTools; -public class ChronicleQueueTest { +public class ChronicleQueueIntegrationTest { @Test public void givenSetOfValues_whenWriteToQueue_thenWriteSuccesfully() throws IOException { diff --git a/libraries/src/test/java/com/baeldung/hll/HLLUnitTest.java b/libraries/src/test/java/com/baeldung/hll/HLLLongRunningUnitTest.java similarity index 98% rename from libraries/src/test/java/com/baeldung/hll/HLLUnitTest.java rename to libraries/src/test/java/com/baeldung/hll/HLLLongRunningUnitTest.java index e208add3c8..5ecd4442d8 100644 --- a/libraries/src/test/java/com/baeldung/hll/HLLUnitTest.java +++ b/libraries/src/test/java/com/baeldung/hll/HLLLongRunningUnitTest.java @@ -11,7 +11,7 @@ import java.util.stream.LongStream; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; -public class HLLUnitTest { +public class HLLLongRunningUnitTest { @Test public void givenHLL_whenAddHugeAmountOfNumbers_thenShouldReturnEstimatedCardinality() { From dc867672e9441d9d3c4c67b77dd78566c8321b57 Mon Sep 17 00:00:00 2001 From: lor6 Date: Tue, 22 Aug 2017 14:22:49 +0300 Subject: [PATCH 13/18] logback example app (#2354) --- guest/logback-example/pom.xml | 41 +++++ .../stackify/logging/IgnoreLoggerFilter.java | 28 ++++ .../java/com/stackify/models/Employee.java | 43 +++++ .../stackify/services/EmployeeService.java | 11 ++ .../src/main/resources/application.properties | 1 + .../src/main/resources/logback.xml | 151 ++++++++++++++++++ .../services/EmployeeServiceTest.java | 74 +++++++++ 7 files changed, 349 insertions(+) create mode 100644 guest/logback-example/pom.xml create mode 100644 guest/logback-example/src/main/java/com/stackify/logging/IgnoreLoggerFilter.java create mode 100644 guest/logback-example/src/main/java/com/stackify/models/Employee.java create mode 100644 guest/logback-example/src/main/java/com/stackify/services/EmployeeService.java create mode 100644 guest/logback-example/src/main/resources/application.properties create mode 100644 guest/logback-example/src/main/resources/logback.xml create mode 100644 guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java diff --git a/guest/logback-example/pom.xml b/guest/logback-example/pom.xml new file mode 100644 index 0000000000..9d88c94197 --- /dev/null +++ b/guest/logback-example/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + com.stackify + logback-example + 0.0.1-SNAPSHOT + + + + ch.qos.logback + logback-classic + 1.2.3 + + + + junit + junit + 4.12 + + + + org.codehaus.janino + janino + 3.0.7 + + + + + + + + maven-compiler-plugin + 3.5 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/guest/logback-example/src/main/java/com/stackify/logging/IgnoreLoggerFilter.java b/guest/logback-example/src/main/java/com/stackify/logging/IgnoreLoggerFilter.java new file mode 100644 index 0000000000..c0eb414588 --- /dev/null +++ b/guest/logback-example/src/main/java/com/stackify/logging/IgnoreLoggerFilter.java @@ -0,0 +1,28 @@ +package com.stackify.logging; + +import org.slf4j.Marker; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.turbo.TurboFilter; +import ch.qos.logback.core.spi.FilterReply; + +public class IgnoreLoggerFilter extends TurboFilter { + + private String loggerName; + + @Override + public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable t) { + if (loggerName == null) { + return FilterReply.NEUTRAL; + } else if (loggerName.equals(logger.getName())) { + return FilterReply.DENY; + } else + return FilterReply.NEUTRAL; + } + + public void setLoggerName(String loggerName) { + this.loggerName = loggerName; + } + +} diff --git a/guest/logback-example/src/main/java/com/stackify/models/Employee.java b/guest/logback-example/src/main/java/com/stackify/models/Employee.java new file mode 100644 index 0000000000..1d040b372b --- /dev/null +++ b/guest/logback-example/src/main/java/com/stackify/models/Employee.java @@ -0,0 +1,43 @@ +package com.stackify.models; + +public class Employee { + + private String email; + private String name; + + private double salary; + + public Employee() { + } + + public Employee(String email, String name, double salary) { + this.email = email; + this.name = name; + this.salary = salary; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public double getSalary() { + return salary; + } + + public void setSalary(double salary) { + this.salary = salary; + } + +} diff --git a/guest/logback-example/src/main/java/com/stackify/services/EmployeeService.java b/guest/logback-example/src/main/java/com/stackify/services/EmployeeService.java new file mode 100644 index 0000000000..1795101f40 --- /dev/null +++ b/guest/logback-example/src/main/java/com/stackify/services/EmployeeService.java @@ -0,0 +1,11 @@ +package com.stackify.services; + +import com.stackify.models.Employee; + +public class EmployeeService { + + public double calculateBonus(Employee user) { + return 0.1 * user.getSalary(); + } + +} diff --git a/guest/logback-example/src/main/resources/application.properties b/guest/logback-example/src/main/resources/application.properties new file mode 100644 index 0000000000..601f964ff3 --- /dev/null +++ b/guest/logback-example/src/main/resources/application.properties @@ -0,0 +1 @@ +env=dev \ No newline at end of file diff --git a/guest/logback-example/src/main/resources/logback.xml b/guest/logback-example/src/main/resources/logback.xml new file mode 100644 index 0000000000..d8ec24c7c3 --- /dev/null +++ b/guest/logback-example/src/main/resources/logback.xml @@ -0,0 +1,151 @@ + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + System.out + + + + + + + + + log-%d{yyyy-MM-dd}.log + 30 + 3GB + + + 3MB + + + %d [%thread] %-5level %logger{50} - %msg%n + + + + + + userRole + ANONYMOUS + + + + ${userRole}.log + + %d [%thread] %level %mdc %logger{50} - %msg%n + + + + + + + + + %d %green([%thread]) %highlight(%level) %logger{50} - %msg%n + + + + + + + %thread%level%logger%msg + + + log.html + + + + + + ERROR + ACCEPT + DENY + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + System.err + + + + + WARN + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + + + + return (level > DEBUG && message.toLowerCase().contains("employee")); + + DENY + NEUTRAL + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + + + + 2 + + + + ignoredColorLogger + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java b/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java new file mode 100644 index 0000000000..187b27e1df --- /dev/null +++ b/guest/logback-example/src/test/java/com/stackify/services/EmployeeServiceTest.java @@ -0,0 +1,74 @@ +package com.stackify.services; + +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; + +import com.stackify.models.Employee; + +import ch.qos.logback.classic.Level; + +public class EmployeeServiceTest { + private static final Logger logger = LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + + private EmployeeService employeeService = new EmployeeService(); + + @Test + public void testAppenders() { + Logger rollingFileLogger = LoggerFactory.getLogger("rollingFileLogger"); + rollingFileLogger.info("Testing rolling file logger"); + + MDC.put("userRole", "ADMIN"); + Logger siftingLogger = LoggerFactory.getLogger("roleSiftingLogger"); + siftingLogger.info("Admin Action"); + } + + @Test + public void testLayouts() { + Logger htmlLogger = LoggerFactory.getLogger("htmlLogger"); + htmlLogger.error("Employee Information Update Failed"); + htmlLogger.info("New Account Created"); + + Logger colorLogger = LoggerFactory.getLogger("colorLogger"); + colorLogger.error("Employee Information Update Failed"); + colorLogger.info("New Account Created"); + } + + @Test + public void testLogLevel() { + ch.qos.logback.classic.Logger rollingFileLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger("rollingFileLogger"); + rollingFileLogger.setLevel(Level.DEBUG); + rollingFileLogger.debug("Testing Log Level"); + } + + @Test + public void testParameter() { + Employee employee = new Employee("john@gmail.com", "John", 2000); + if (logger.isDebugEnabled()) { + logger.debug("The bonus for employee: " + employee.getName() + " is " + employeeService.calculateBonus(employee)); + } + logger.debug("The bonus for employee {} is {}", employee.getName(), employeeService.calculateBonus(employee)); + } + + @Test + public void testFilters() { + Logger levelFilterLogger = LoggerFactory.getLogger("levelFilterLogger"); + levelFilterLogger.error("Employee Information Update Failed"); + Logger thresholdFilterLogger = LoggerFactory.getLogger("thresholdFilterLogger"); + thresholdFilterLogger.trace("Employee record inserted"); + Logger evaluatorFilterLogger = LoggerFactory.getLogger("evaluatorFilterLogger"); + evaluatorFilterLogger.debug("Employee account deactivated"); + } + + @Test + public void testIgnoredLogger() { + Logger colorLogger = LoggerFactory.getLogger("ignoredColorLogger"); + colorLogger.info("Ignored Log Message"); + } + + @Test + public void testConditionalConfiguration() { + logger.trace("Employee record updated"); + } +} From ccba3de76531e1b01ab10156dd4ba6247e360c74 Mon Sep 17 00:00:00 2001 From: Buddhini Samarakkody Date: Wed, 23 Aug 2017 06:22:06 +0530 Subject: [PATCH 14/18] Delete and add new test for BAEL-698 (#2479) * Delete HibernateManyToManyAnnotationXMLConfigMainIntegrationTest.java * Add new test class * Rename test methods --- ...yToManyAnnotationMainIntegrationTest.java} | 57 ++++++++----------- 1 file changed, 25 insertions(+), 32 deletions(-) rename spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/{HibernateManyToManyAnnotationXMLConfigMainIntegrationTest.java => HibernateManyToManyAnnotationMainIntegrationTest.java} (50%) diff --git a/spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationXMLConfigMainIntegrationTest.java b/spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java similarity index 50% rename from spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationXMLConfigMainIntegrationTest.java rename to spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java index 5308134fac..2ec1246961 100644 --- a/spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationXMLConfigMainIntegrationTest.java +++ b/spring-hibernate5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java @@ -12,17 +12,16 @@ import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; + import com.baeldung.hibernate.manytomany.util.HibernateUtil; import com.baeldung.hibernate.manytomany.model.Employee; import com.baeldung.hibernate.manytomany.model.Project; - -public class HibernateManyToManyAnnotationXMLConfigMainIntegrationTest { +public class HibernateManyToManyAnnotationMainIntegrationTest { private static SessionFactory sessionFactory; private Session session; - @BeforeClass public static void beforeTests() { sessionFactory = HibernateUtil.getSessionFactory(); @@ -34,45 +33,39 @@ public class HibernateManyToManyAnnotationXMLConfigMainIntegrationTest { session.beginTransaction(); } - @Test - public void givenSession_checkIfDatabaseIsPopulated() { - Employee employee1 = new Employee("Peter", "Oven"); + public void givenData_whenInsert_thenCreatesMtoMrelationship() { + String[] employeeData = { "Peter Oven", "Allan Norman" }; + String[] projectData = { "IT Project", "Networking Project" }; Set projects = new HashSet(); - projects = employee1.getProjects(); - int noProjects = projects.size(); - assertEquals(0,noProjects); - Project project1 = new Project("IT Project"); - assertNotNull(project1); - projects.add(project1); - Project project2 = new Project("Networking Project"); - assertNotNull(project2); - projects.add(project2); - employee1.setProjects(projects); - assertNotNull(employee1); - Employee employee2 = new Employee("Allan", "Norman"); - employee2.setProjects(projects); - assertNotNull(employee2); - - session.persist(employee1); - session.persist(employee2); - session.getTransaction().commit(); - session.close(); - session = sessionFactory.openSession(); - session.beginTransaction(); - @SuppressWarnings("unchecked") - List projectList = session.createQuery("FROM Project").list(); - assertNotNull(projectList); + for (String proj : projectData) { + projects.add(new Project(proj)); + } + + for (String emp : employeeData) { + Employee employee = new Employee(emp.split(" ")[0], emp.split(" ")[1]); + assertEquals(0, employee.getProjects().size()); + employee.setProjects(projects); + assertNotNull(employee); + session.persist(employee); + } + } + + @Test + public void givenSession_whenRead_thenReturnsMtoMdata() { @SuppressWarnings("unchecked") List employeeList = session.createQuery("FROM Employee").list(); assertNotNull(employeeList); + for(Employee employee : employeeList) { + assertNotNull(employee.getProjects()); + } } - @After public void tearDown() { - session.getTransaction().commit(); + session.getTransaction() + .commit(); session.close(); } From 18b1334ff12d098265fa1af2a497bbd21cd217b9 Mon Sep 17 00:00:00 2001 From: lor6 Date: Wed, 23 Aug 2017 11:53:21 +0300 Subject: [PATCH 15/18] move reladomo ex to librarie-data (#2485) --- libraries-data/pom.xml | 126 ++++++++++++++++++ .../com/baeldung/reladomo/Department.java | 0 .../reladomo/DepartmentDatabaseObject.java | 0 .../com/baeldung/reladomo/DepartmentList.java | 0 .../java/com/baeldung/reladomo/Employee.java | 0 .../reladomo/EmployeeDatabaseObject.java | 0 .../com/baeldung/reladomo/EmployeeList.java | 0 .../reladomo/ReladomoApplication.java | 0 .../reladomo/ReladomoConnectionManager.java | 0 .../main/resources/ReladomoRuntimeConfig.xml | 0 .../main/resources/reladomo/Department.xml | 0 .../src/main/resources/reladomo/Employee.xml | 0 .../resources/reladomo/ReladomoClassList.xml | 0 .../com/baeldung/reladomo/ReladomoTest.java | 0 .../resources/reladomo/ReladomoTestConfig.xml | 0 .../src/test/resources/reladomo/test-data.txt | 0 libraries/pom.xml | 96 ------------- 17 files changed, 126 insertions(+), 96 deletions(-) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/Department.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/DepartmentList.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/Employee.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/EmployeeList.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/ReladomoApplication.java (100%) rename {libraries => libraries-data}/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java (100%) rename {libraries => libraries-data}/src/main/resources/ReladomoRuntimeConfig.xml (100%) rename {libraries => libraries-data}/src/main/resources/reladomo/Department.xml (100%) rename {libraries => libraries-data}/src/main/resources/reladomo/Employee.xml (100%) rename {libraries => libraries-data}/src/main/resources/reladomo/ReladomoClassList.xml (100%) rename {libraries => libraries-data}/src/test/java/com/baeldung/reladomo/ReladomoTest.java (100%) rename {libraries => libraries-data}/src/test/resources/reladomo/ReladomoTestConfig.xml (100%) rename {libraries => libraries-data}/src/test/resources/reladomo/test-data.txt (100%) diff --git a/libraries-data/pom.xml b/libraries-data/pom.xml index 94a9ca43f4..cae8a725a6 100644 --- a/libraries-data/pom.xml +++ b/libraries-data/pom.xml @@ -14,9 +14,135 @@ com.esotericsoftware kryo ${kryo.version} + + + com.h2database + h2 + ${h2.version} + + + junit + junit + ${junit.version} + test + + + com.goldmansachs.reladomo + reladomo + ${reladomo.version} + + + com.goldmansachs.reladomo + reladomo-test-util + ${reladomo.version} + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + + + maven-antrun-plugin + 1.8 + + + generateMithra + generate-sources + + run + + + + + + + + + + + + + + + + + + com.goldmansachs.reladomo + reladomogen + ${reladomo.version} + + + + com.goldmansachs.reladomo + reladomo-gen-util + ${reladomo.version} + + + + + + org.codehaus.mojo + build-helper-maven-plugin + 3.0.0 + + + add-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/reladomo + + + + + add-resource + generate-resources + + add-resource + + + + + ${project.build.directory}/generated-db/ + + + + + + + + + + + 4.0.1 + 1.4.196 + 16.5.1 + 4.12 + 3.6.2 \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/reladomo/Department.java b/libraries-data/src/main/java/com/baeldung/reladomo/Department.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/Department.java rename to libraries-data/src/main/java/com/baeldung/reladomo/Department.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java b/libraries-data/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java rename to libraries-data/src/main/java/com/baeldung/reladomo/DepartmentDatabaseObject.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/DepartmentList.java b/libraries-data/src/main/java/com/baeldung/reladomo/DepartmentList.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/DepartmentList.java rename to libraries-data/src/main/java/com/baeldung/reladomo/DepartmentList.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/Employee.java b/libraries-data/src/main/java/com/baeldung/reladomo/Employee.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/Employee.java rename to libraries-data/src/main/java/com/baeldung/reladomo/Employee.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java b/libraries-data/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java rename to libraries-data/src/main/java/com/baeldung/reladomo/EmployeeDatabaseObject.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/EmployeeList.java b/libraries-data/src/main/java/com/baeldung/reladomo/EmployeeList.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/EmployeeList.java rename to libraries-data/src/main/java/com/baeldung/reladomo/EmployeeList.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/ReladomoApplication.java b/libraries-data/src/main/java/com/baeldung/reladomo/ReladomoApplication.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/ReladomoApplication.java rename to libraries-data/src/main/java/com/baeldung/reladomo/ReladomoApplication.java diff --git a/libraries/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java b/libraries-data/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java similarity index 100% rename from libraries/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java rename to libraries-data/src/main/java/com/baeldung/reladomo/ReladomoConnectionManager.java diff --git a/libraries/src/main/resources/ReladomoRuntimeConfig.xml b/libraries-data/src/main/resources/ReladomoRuntimeConfig.xml similarity index 100% rename from libraries/src/main/resources/ReladomoRuntimeConfig.xml rename to libraries-data/src/main/resources/ReladomoRuntimeConfig.xml diff --git a/libraries/src/main/resources/reladomo/Department.xml b/libraries-data/src/main/resources/reladomo/Department.xml similarity index 100% rename from libraries/src/main/resources/reladomo/Department.xml rename to libraries-data/src/main/resources/reladomo/Department.xml diff --git a/libraries/src/main/resources/reladomo/Employee.xml b/libraries-data/src/main/resources/reladomo/Employee.xml similarity index 100% rename from libraries/src/main/resources/reladomo/Employee.xml rename to libraries-data/src/main/resources/reladomo/Employee.xml diff --git a/libraries/src/main/resources/reladomo/ReladomoClassList.xml b/libraries-data/src/main/resources/reladomo/ReladomoClassList.xml similarity index 100% rename from libraries/src/main/resources/reladomo/ReladomoClassList.xml rename to libraries-data/src/main/resources/reladomo/ReladomoClassList.xml diff --git a/libraries/src/test/java/com/baeldung/reladomo/ReladomoTest.java b/libraries-data/src/test/java/com/baeldung/reladomo/ReladomoTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/reladomo/ReladomoTest.java rename to libraries-data/src/test/java/com/baeldung/reladomo/ReladomoTest.java diff --git a/libraries/src/test/resources/reladomo/ReladomoTestConfig.xml b/libraries-data/src/test/resources/reladomo/ReladomoTestConfig.xml similarity index 100% rename from libraries/src/test/resources/reladomo/ReladomoTestConfig.xml rename to libraries-data/src/test/resources/reladomo/ReladomoTestConfig.xml diff --git a/libraries/src/test/resources/reladomo/test-data.txt b/libraries-data/src/test/resources/reladomo/test-data.txt similarity index 100% rename from libraries/src/test/resources/reladomo/test-data.txt rename to libraries-data/src/test/resources/reladomo/test-data.txt diff --git a/libraries/pom.xml b/libraries/pom.xml index e9603b1453..6d1098246e 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -106,91 +106,6 @@ - - - maven-antrun-plugin - 1.8 - - - generateMithra - generate-sources - - run - - - - - - - - - - - - - - - - - - com.goldmansachs.reladomo - reladomogen - ${reladomo.version} - - - - com.goldmansachs.reladomo - reladomo-gen-util - ${reladomo.version} - - - - - - org.codehaus.mojo - build-helper-maven-plugin - 3.0.0 - - - add-source - generate-sources - - add-source - - - - ${project.build.directory}/generated-sources/reladomo - - - - - add-resource - generate-resources - - add-resource - - - - - ${project.build.directory}/generated-db/ - - - - - - - - @@ -583,16 +498,6 @@ gt-swing ${geotools.version} - - com.goldmansachs.reladomo - reladomo - ${reladomo.version} - - - com.goldmansachs.reladomo - reladomo-test-util - ${reladomo.version} - @@ -659,6 +564,5 @@ 0.6.5 0.9.0 15.2 - 16.5.1 \ No newline at end of file From b6674f68dc1ae936ed46cabd251915ccb99c45b7 Mon Sep 17 00:00:00 2001 From: ahmetcetin39 <30636222+ahmetcetin39@users.noreply.github.com> Date: Wed, 23 Aug 2017 16:37:50 +0300 Subject: [PATCH 16/18] BAEL-1070 - CharSequence vs String in Java (#2451) * Different types of bean injection classes are added. * JUnit Tests for Zoo and Forest Class * Necessary dependency is added to pom.xml * Updated pom.xml Carried dependency to into another dependency tag. * dependency added. * dependency is carried. * dependency is added. * A test dependency is added. * dependency is changed. * Dependency is changed. * Test classes are changed and moved. * test correction * correction * String vs CharSequence * unnecesseray files are deleted. * correction * Assert statemenet is changed from java to junit * Assert is changed. * changed the name of the test methods. --- .../string/CharSequenceVsStringUnitTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 core-java/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java diff --git a/core-java/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java b/core-java/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java new file mode 100644 index 0000000000..1378b5d876 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/string/CharSequenceVsStringUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.string; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; + +public class CharSequenceVsStringUnitTest { + + @Test + public void givenUsingString_whenInstantiatingString_thenWrong() { + CharSequence firstString = "bealdung"; + String secondString = "baeldung"; + + assertNotEquals(firstString, secondString); + } + + @Test + public void givenIdenticalCharSequences_whenCastToString_thenEqual() { + CharSequence charSequence1 = "baeldung_1"; + CharSequence charSequence2 = "baeldung_2"; + + assertTrue(charSequence1.toString().compareTo(charSequence2.toString()) > 0); + } + + @Test + public void givenString_whenAppended_thenUnmodified() { + String test = "a"; + int firstAddressOfTest = System.identityHashCode(test); + test += "b"; + int secondAddressOfTest = System.identityHashCode(test); + + assertEquals(firstAddressOfTest, secondAddressOfTest); + } + + @Test + public void givenStringBuilder_whenAppended_thenModified() { + StringBuilder test = new StringBuilder(); + test.append("a"); + int firstAddressOfTest = System.identityHashCode(test); + test.append("b"); + int secondAddressOfTest = System.identityHashCode(test); + + assertEquals(firstAddressOfTest, secondAddressOfTest); + } +} From 621d0d2c621cdc3badca795bfb92928cd708d11c Mon Sep 17 00:00:00 2001 From: Yasin Date: Wed, 23 Aug 2017 23:30:25 +0530 Subject: [PATCH 17/18] BAEL-1073 Converting a List to String in Java (#2489) --- .../org/baeldung/java/lists/ListToSTring.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 core-java/src/test/java/org/baeldung/java/lists/ListToSTring.java diff --git a/core-java/src/test/java/org/baeldung/java/lists/ListToSTring.java b/core-java/src/test/java/org/baeldung/java/lists/ListToSTring.java new file mode 100644 index 0000000000..3fc26bcb51 --- /dev/null +++ b/core-java/src/test/java/org/baeldung/java/lists/ListToSTring.java @@ -0,0 +1,31 @@ +package org.baeldung.java.lists; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.lang3.StringUtils; +import org.junit.Test; + +public class ListToSTring { + + @Test + public void whenListToString_thenPrintDefault() { + List intLIst = Arrays.asList(1, 2, 3); + System.out.println(intLIst); + } + + @Test + public void whenCollectorsJoining_thenPrintCustom() { + List intList = Arrays.asList(1, 2, 3); + System.out.println(intList.stream() + .map(n -> String.valueOf(n)) + .collect(Collectors.joining("-", "{", "}"))); + } + + @Test + public void whenStringUtilsJoin_thenPrintCustom() { + List intList = Arrays.asList(1, 2, 3); + System.out.println(StringUtils.join(intList, "|")); + } +} From 15666e8ed4bd33c1a8ea399bd3bbf2f82b74f546 Mon Sep 17 00:00:00 2001 From: Shivang Sarawagi Date: Wed, 23 Aug 2017 23:44:49 +0530 Subject: [PATCH 18/18] Binary Search Algorithm (#2452) * Binary search * deleting previous files * BinarySearch along with the test case --- .../com/baeldung/algorithms/BinarySearch.java | 37 ++++++++++++++++--- .../java/algorithms/BinarySearchTest.java | 33 +++++++++++++++-- 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java b/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java index be4a9e578a..86522950ef 100644 --- a/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java +++ b/algorithms/src/main/java/com/baeldung/algorithms/BinarySearch.java @@ -1,11 +1,11 @@ +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + public class BinarySearch { - public int runBinarySearch() { - int[] sortedArray = { 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9 }; - int key = 6; + public int runBinarySearchIteratively(int[] sortedArray, int key, int low, int high) { - int low = 0; - int high = sortedArray.length - 1; int index = Integer.MAX_VALUE; while (low <= high) { @@ -23,4 +23,31 @@ public class BinarySearch { } return index; } + + public int runBinarySearchRecursively(int[] sortedArray, int key, int low, int high) { + + int middle = (low + high) / 2; + if (high < low) { + return -1; + } + + if (key == sortedArray[middle]) { + return middle; + } else if (key < sortedArray[middle]) { + return runBinarySearchRecursively(sortedArray, key, low, middle - 1); + } else { + return runBinarySearchRecursively(sortedArray, key, middle + 1, high); + } + } + + public int runBinarySearchUsingJavaArrays(int[] sortedArray, Integer key) { + int index = Arrays.binarySearch(sortedArray, key); + return index; + } + + public int runBinarySearchUsingJavaCollections(List sortedList, Integer key) { + int index = Collections.binarySearch(sortedList, key); + return index; + } + } diff --git a/algorithms/src/test/java/algorithms/BinarySearchTest.java b/algorithms/src/test/java/algorithms/BinarySearchTest.java index d53b074cc4..3611ec8e49 100644 --- a/algorithms/src/test/java/algorithms/BinarySearchTest.java +++ b/algorithms/src/test/java/algorithms/BinarySearchTest.java @@ -1,14 +1,41 @@ +import java.util.Arrays; +import java.util.List; + import org.junit.Assert; import org.junit.Test; public class BinarySearchTest { + int[] sortedArray = { 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9 }; + int key = 6; + int expectedIndexForSearchKey = 7; + int low = 0; + int high = sortedArray.length - 1; + List sortedList = Arrays.asList(0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9, 9); + @Test - public void givenASortedArrayOfIntegers_whenBinarySearchRunForANumber_thenGetIndexOfTheNumber() { + public void givenASortedArrayOfIntegers_whenBinarySearchRunIterativelyForANumber_thenGetIndexOfTheNumber() { BinarySearch binSearch = new BinarySearch(); - int expectedIndexForSearchKey = 7; - Assert.assertEquals(expectedIndexForSearchKey, binSearch.runBinarySearch()); + Assert.assertEquals(expectedIndexForSearchKey, binSearch.runBinarySearchIteratively(sortedArray, key, low, high)); } + @Test + public void givenASortedArrayOfIntegers_whenBinarySearchRunRecursivelyForANumber_thenGetIndexOfTheNumber() { + BinarySearch binSearch = new BinarySearch(); + Assert.assertEquals(expectedIndexForSearchKey, binSearch.runBinarySearchRecursively(sortedArray, key, low, high)); + } + + @Test + public void givenASortedArrayOfIntegers_whenBinarySearchRunUsingArraysClassStaticMethodForANumber_thenGetIndexOfTheNumber() { + BinarySearch binSearch = new BinarySearch(); + Assert.assertEquals(expectedIndexForSearchKey, binSearch.runBinarySearchUsingJavaArrays(sortedArray, key)); + } + + @Test + public void givenASortedListOfIntegers_whenBinarySearchRunUsingCollectionsClassStaticMethodForANumber_thenGetIndexOfTheNumber() { + BinarySearch binSearch = new BinarySearch(); + Assert.assertEquals(expectedIndexForSearchKey, binSearch.runBinarySearchUsingJavaCollections(sortedList, key)); + } + }