From 0bff4e06cf27c4ab5f21305ad67d5f17e1383ac1 Mon Sep 17 00:00:00 2001 From: michelefiori Date: Thu, 15 May 2025 15:25:17 +0200 Subject: [PATCH] Migrated to Spring --- .../6.7/executionHistory/executionHistory.bin | Bin 117584 -> 117584 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/6.7/fileHashes/fileHashes.bin | Bin 26397 -> 26897 bytes .gradle/6.7/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .gradle/6.7/javaCompile/javaCompile.lock | Bin 17 -> 17 bytes .gradle/6.7/javaCompile/taskHistory.bin | Bin 29868 -> 29868 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .gradle/buildOutputCleanup/outputFiles.bin | Bin 20207 -> 20459 bytes build.gradle | 47 ++----- .../classes/java/main/beans/Dictionary.class | Bin 2582 -> 0 bytes build/classes/java/main/beans/Word.class | Bin 937 -> 0 bytes build/classes/java/main/client/MyClient.class | Bin 3872 -> 4872 bytes .../java/main/server/Application.class | Bin 0 -> 889 bytes .../classes/java/main/server/Dictionary.class | Bin 0 -> 2091 bytes .../main/server/DictionaryController.class | Bin 0 -> 3602 bytes build/classes/java/main/server/Word.class | Bin 0 -> 910 bytes .../main/services/DictionaryRestService.class | Bin 2725 -> 0 bytes .../java/main/services/StartServer.class | Bin 1306 -> 0 bytes .../compileJava/source-classes-mapping.txt | 16 +-- src/main/java/client/MyClient.java | 124 +++++++++--------- src/main/java/server/Application.java | 14 ++ .../java/{beans => server}/Dictionary.java | 31 +---- .../java/server/DictionaryController.java | 54 ++++++++ src/main/java/{beans => server}/Word.java | 5 +- .../java/services/DictionaryRestService.java | 59 --------- src/main/java/services/StartServer.java | 27 ---- 26 files changed, 153 insertions(+), 224 deletions(-) delete mode 100644 build/classes/java/main/beans/Dictionary.class delete mode 100644 build/classes/java/main/beans/Word.class create mode 100644 build/classes/java/main/server/Application.class create mode 100644 build/classes/java/main/server/Dictionary.class create mode 100644 build/classes/java/main/server/DictionaryController.class create mode 100644 build/classes/java/main/server/Word.class delete mode 100644 build/classes/java/main/services/DictionaryRestService.class delete mode 100644 build/classes/java/main/services/StartServer.class create mode 100644 src/main/java/server/Application.java rename src/main/java/{beans => server}/Dictionary.java (60%) create mode 100644 src/main/java/server/DictionaryController.java rename src/main/java/{beans => server}/Word.java (84%) delete mode 100644 src/main/java/services/DictionaryRestService.java delete mode 100644 src/main/java/services/StartServer.java diff --git a/.gradle/6.7/executionHistory/executionHistory.bin b/.gradle/6.7/executionHistory/executionHistory.bin index 3d2cf79f1a0cb21d8dd7b6dc4664ad04079711b4..395a46f759f14a6a52bf46b9b050ee23de1e699c 100644 GIT binary patch delta 11389 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 delta 7217 zcmb_g3s@A_752==S0S*wAS{T;s|e`sxPbD|1W7QJHl!%{w#M0I78Vy4XBJ$7Nin`? z660f|Ln_1&o__He{X|fs1Vvk$6vZG^W58;RMr?gHq1yJ&% zx#yfYcUm_OZQVSycps$DW5%^@p|osFj4reAHC?9JWQ@#ZmQ2iCYR;m}^dRwv8MK#6 z%z{zeG#!LWz~Qg|f(th*6D%;O{-2pJk|1QKxD6X%GL>mGW*TUf)|f%7GFf9TDSSk# zV#t^YYTbnBSZ(YC9Tgp?i;5brrL`K3IyPoPY+RHsE=H}1iqb~Y0z!!ps%(mpNWISN zpS8}__0{sJ!-{U4Jru$%FNR5h#vB!!pR3BI8I~?2#V=(xucub2<5X(W;@=hqq-9Z! zLe{pdq;y}bW<`|o!A?V~E`#9ql)!VAD>I}c$ZSfx7@?Hel$l`>Hck~uS{~H!P$>5H zlt^DVmbC7~p4D^IOzLaFZNRN{L9JLi>TRU zK8?YJ-J^)_>`-4jG>6K|qZuW|8f+Bm>Wa(K=WgGZH@dEq=n(wz@5dh$ z6FY@*`xsKBcuIF|BsinjT-icUG)ky~FXOa1K1ijUMW3ES+ zVQu~WA&z{M)}$|>OnOx84wpitQ~wnf=CJr^+di#o+<%}Zrz!5Uv%i1gX2kP2LPi z2WKii6rNDt$dH2WV0g;%MRz~j6AVvXo4n^m1X{$d3_-#GBNeu7cD#~HR zxFnigY%=DNFH@QT1FbdXGc-#^ll*`{PBqhvR?ngZ^xtS@5_hx=yd^+f#Dgl_G&GgV z0<0FkZ(_0}2xu}%kNS);mtqQ0ODdowQr-OQ>TAjJ9T96ij(p)}J`bDwz42R2*(i~1 zwvoxO3LaTe^tNhOZfbP4+cUR9BwxV#KDT_0DaCEy0`Aa*i-t1rl3xhb+z(wGDQWC{ zy}6(vv=}yVXx$UK@mT$&dM%B%?hkwc^Op}Wd1muqhs~Qov!*nW(;C*l9NSW|=;XoS zKBr@2{+_?B1*&YCkAdCBGzVo7GAGSMF@hB|V>P0%F(ZzyublH`rRT*f2NO=fAMHl; zy&3f`yh;j}elV?JRjF?SjIH#JcYnCiN3tmcg+re!JUx^245~*XQ#kw*hCszu2$TTe zLII~tmQ+E|Frfwj8$U$A|A65!uO1;*phIua8Yq^PNPTNxS#jjTf3~c=UAVU9^9xr1 zSHZh~g*%uAhlq4SSFxJ9p7v|bUz_;ny9>TqL!^v$0bFibU+!y|Msi0#gdr%I284(2 z2cYgPuWi}6|Js51pA{aGuK8Q@{ND_SZUh>(oUd7wV4*|BHi!!!%)^C&!O15tuO0oE z)@jY1fbw$(T-v86o~rfPTj5$=Bn~GST7gf}dWado2!YtKhgwaqt@pk<-{cv2pe(UyoCHisKt04@I^2a(SLp!Ag5^;f3aDfTj zf?604cQJMh*&D`%&9C;6RRu>7OlYku9) z2KW;0eI&S@Rp5tX>);tv)6#)Utpjgt_&3;*dX`rwh363fK8?#G8vKxkKO!M#qN&cd zYwxA+I@5MID`?xY^o3`Qi+u*LYhL|Ih%+iq^dtK4u{N9M-PoJF`|jC;em6Tz$KG9; z2lyJ^{cBvs-g7sB@I~R>C7?GI`~w%qc~=LXe`B*mIk1qTQPw_Si)F(5Ma}H_j_3UE z=_>!)valQQ#R8rnCJs_K!H^2fwzG(BB*S46x5viRiyc_5;vo3=SRdjsB{L(wU-heo zvRPkUe!Xc_Aq>cu4vr7a>Flr(%NBwtfFc7 z^(NMIKZDT8^QZ27msCGQjHof=L z7Vg`Xk)6ZESx7uhIlDv2H4tk(h+#lu@SzjMiAa3I;;eK@9YmnR5I&f|$39O?3fQ~8 N%hkJ{sfUXm{{uN1O1}UA diff --git a/.gradle/6.7/executionHistory/executionHistory.lock b/.gradle/6.7/executionHistory/executionHistory.lock index 73d688b770403cee5ba89b6f7aa3417b052d8e6d..dd295b01c669c83d1e51bfca4d3764a95e3561a9 100644 GIT binary patch literal 17 VcmZSHUU)b*s&hv)0~j#L001^r1YiIF literal 17 VcmZSHUU)b*s&hv)0~j!g0suBm1X%z8 diff --git a/.gradle/6.7/fileHashes/fileHashes.bin b/.gradle/6.7/fileHashes/fileHashes.bin index 1ab71d1307cfd0c2a441010d8418d6c0115854e7..4e9958e9f5a454e240bc7330381db4b640420279 100644 GIT binary patch delta 747 zcmbPxj&b58#tkMCj4L*qN(3+pO#Hg(TyJf~BnB`@_n%xVIYVH&lYsT1;x0ajV21c+ zUa1a7fo)vNrSv=4qM=F~C-+LvG}&&{QBLX3QFiO-I#^n~i(yt!7slaYVws-7H27B#4#?B>4;j*R?y zMh_;|E}sb1eSfp5k_3~0-ISFh(d69d*F_2>h{64nq*ElZ9Fq@FyJk>@ZY z=69;$yGvjlvL_WFIym$&b@ab_ZRW9DBFEn{F7C;nhZSHQVrK*(I{55hI_eRA7uz|7 z1T!y2)? zH9u}FzU%OJPKSB^afWhG0L#KGVeZ4!vd-wjx)Vm8AKuwYUcM;XF$dKW=1NQ*;{S@c XyDM_)#N!zPIzu?EQFRD|JfsHzT=KxZ delta 79 zcmV-V0I>g&(gB^$0kAX}0iLrp7*GL|of(j`MH+wslieGUvxXce0+YoaF|!UI2?4V& lAb$a~#vwQXvlb%{0<%3O!U6&g;jtn37qKun39~^++#Yhk8>s*Q diff --git a/.gradle/6.7/fileHashes/fileHashes.lock b/.gradle/6.7/fileHashes/fileHashes.lock index 5f17618648648e8e1721b9522d760be7dedcf838..da9dc0a3f97ec5ef5d5bfcd45f78271f393452b8 100644 GIT binary patch literal 17 VcmZRMJbXs##J>3^3}C?Y2>>`n1ycY3 literal 17 VcmZRMJbXs##J>3^3}C?Y3;;Me1xEk? diff --git a/.gradle/6.7/javaCompile/javaCompile.lock b/.gradle/6.7/javaCompile/javaCompile.lock index 5a62152ffa40afc92eca99103a38c199b404692c..e4259ff7efc7518993216b39a4985fb900235e69 100644 GIT binary patch literal 17 UcmZRssg;yV;(Icm0SuVj046pAZvX%Q literal 17 UcmZRssg;yV;(Icm0SuU&0VXp8YybcN diff --git a/.gradle/6.7/javaCompile/taskHistory.bin b/.gradle/6.7/javaCompile/taskHistory.bin index db4d3e6fbff59440e1f25d92d3bb9d9180bbe7b9..f6c361d45441137d9562b454c18c6749ebcc1936 100644 GIT binary patch delta 4692 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 VGoa+vx3WB;VbZ4chw8h>{~tB4M6Cb- delta 4631 zcma)9eXJZ+74LhJ`T^;ejV7RgwrFeE+50hfK7deZ-+a0U z%6(dPw#j8dw4JyVp+4Bm;JrxhA ziW=dm+SX(GjiJFS!m(Pql*=@V*X`&r$YOz2XZb_;2F>a1 zK$oRy9Ee(~9-7Kxc^pZVBtbZG1q6$0G7X}zLu9-DR=_;Djz!KuJF8|-dTVbRlqRGa z(=dB_lA6Tw{3R7$Pm;k%_qa*?ul~QsWCx%~#%c;_G+E4ej_>b@oK;-UnpLVO-K!s; z-X;Mt@;Gf7ZS66F!dIvys*J06ikD+ioT~VAQm8kT+2nLrPw2Lu(jZ+opk#%|Tr+!j zk7cvgr9lONcK5t(#kn#{GxtuUde{q^X}zSCJbCNRx84@PRuyi0K$ z#ocPIH%A^QysDOV2D#g$X^~gJt121eQavzLjajeq>6@bKiLqo2Fe&x?CB1EFVJ(TO zS{0jnkOuV@nKVZEkWAJ$zN^Qz6?)*>f#$AS*1h;zFH52B_6p^zScUTRTd$b4Ljx9bvf&k`bIJ__KW}g)3agG@W(=6S52aY`MjHr*QEzn-BgPT|gGR`_CL* zv!E)CXvmm4hbkW%Q*nVOl~yh;GZEspONdl9qYiZ}O9`9!mhw$*J1)GUuF2ZDbRu-+ z^waQ{Pd+tw-;53P=+CY9e$fB$QINzXQ>P)LSal`gm@ai4A_T`au`#kd+p-Zgg@-&x z*|w0_rI@?zBy#_*6pr!T8_p^`a`Nz7*UX&0YyQ$h{l$hHvLJ`k$x>DVn3i0a!~>}- z;hBm_gqiCy$CM_M97L%Ev#3WbM=3uSX44zMwX8EqY%s1KdiUVLzPD@EsnYPGb6(4v z0+P_OJY5bT-SLWQCjsb$xzcwSF$w4cF<~hfL(?acO9xRxiO($PL^fcBmV0*=tCrsS zWc2>Vd;h*++s%9Szxobvpa-NeGDJQk2NmZ$U>8|JI+iOPZer5}@)2dg1b3eD?WPrH?;PF#Xk+6Cm%jWFc+kzvGcbumJP?3SxPiq@QuNNTS_;6YVk4W|yvcH>T zSi=``xS~!J^+&5#1hty3#0W{)@x-%Wze-qt%n_aqxPrUL=R_dSMr}W+6#O#8cMpVD zm-=Tfd-~{C`=9>Jwew!k)SlZpNjr6FZgsAt*!WYhps#rQ=)ArI+WP#CHQagOH$@u< zdVvaHzdZr_#&gMJ2e=Ug=bT5%eo#>fFpbMWWQ@dPvaCM}TH|GG5N4pV1?RN{mB4l+CLER0rUZ^? zu3V4`!a~6__B_$?1QxYtM&qud|GNIsn^rA)cFP|O^TfVI`}>z%RL)M&#^&%suLGH+ zHIYL))N+^y*8&b_w_Zj1-1M>S!@?vEf zQiyKs*Pqz>&|S}-`o;HeeSCQ6J2wUU@@gA*h6UNl0VIB!D%l% z$B|r6A&9M{M-gmTVgf41CWSSpe2MZ_X3pJs*X`K3__CSxfp70#Ezg;EiXH&G&YI81 zzucbTa%+amA9egYt{*!7dvjis@?fp8HT+UG{^fl9p(9_*<4?Y%xmAgW#yMQl&1f2)0*RdeW8`k zEbhaO7qyY3tWOuj$`oiLWx^EPCmn$#=m^kliYeT0ELgtOSBO~(?sjnFZFv zkyY;n|JXYC*-yNBB9MJ6k2m(j)*usNmwsS0yq8=GRyC2I*z;LIs64n@V0_6u7Kp+_>7}#%ic2@@;ks)L zR4jLLtLzT}iSPdP{zX;JvF*!Q+$vDk#`g@bI_&V%&EDDyRxGp?Xu=)pJ32UO>g8Vd5~Ffq~0& aqv8+ojRqHZH#>T)W1HOXT{*eHw;2E>>W-)Y delta 100 zcmaDopYi=%#tkMCg7J;~C-OsdO206Gf#1~0u@W;T^GYUcZk0U2xH(mN2IFK=S&zx3 yvJ)oD%1KW4lY2ioRDR-SF@^7plU0=@c>Y5H0|Up;jfy|SHySALZ+7%p#|8jeL?@pB diff --git a/build.gradle b/build.gradle index 896690f..6ca3c26 100644 --- a/build.gradle +++ b/build.gradle @@ -1,49 +1,24 @@ plugins { - id "java" - id "war" // for REST + id 'java' + id 'org.springframework.boot' version '2.4.0' + id 'io.spring.dependency-management' version '1.0.15.RELEASE' } -group 'org.example' -version '1.0-SNAPSHOT' +group = 'org.example' +version = '1.0-SNAPSHOT' +sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies { - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' - - compile 'com.google.code.gson:gson:2.7' - - // REST Dependencies - // https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl - compile group: 'org.codehaus.jackson', name: 'jackson-core-asl', version: '1.9.2' - // https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-jaxrs - compile group: 'org.codehaus.jackson', name: 'jackson-jaxrs', version: '1.9.2' - // https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl - compile group: 'org.codehaus.jackson', name: 'jackson-mapper-asl', version: '1.9.2' - // https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-xc - compile group: 'org.codehaus.jackson', name: 'jackson-xc', version: '1.9.2' - // https://mvnrepository.com/artifact/com.sun.jersey/jersey-client - compile group: 'com.sun.jersey', name: 'jersey-client', version: '1.19.1' - // https://mvnrepository.com/artifact/com.sun.jersey/jersey-core - compile group: 'com.sun.jersey', name: 'jersey-core', version: '1.19.1' - // https://mvnrepository.com/artifact/com.sun.jersey/jersey-json - compile group: 'com.sun.jersey', name: 'jersey-json', version: '1.19.1' - // https://mvnrepository.com/artifact/com.sun.jersey/jersey-server - compile group: 'com.sun.jersey', name: 'jersey-server', version: '1.19.1' - // https://mvnrepository.com/artifact/com.sun.jersey/jersey-servlet - compile group: 'com.sun.jersey', name: 'jersey-servlet', version: '1.19.1' - // https://mvnrepository.com/artifact/org.codehaus.jettison/jettison - compile group: 'org.codehaus.jettison', name: 'jettison', version: '1.1' - // https://mvnrepository.com/artifact/javax.ws.rs/jsr311-api - compile group: 'javax.ws.rs', name: 'jsr311-api', version: '1.1.1' - // https://mvnrepository.com/artifact/com.sun.jersey/jersey-server - compile group: 'com.sun.jersey', name: 'jersey-server', version: '1.2' + // Spring Web for REST + implementation 'org.springframework.boot:spring-boot-starter-web' + // MQTT + implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' } - test { useJUnitPlatform() -} \ No newline at end of file +} diff --git a/build/classes/java/main/beans/Dictionary.class b/build/classes/java/main/beans/Dictionary.class deleted file mode 100644 index 190a5986ee80e02b4f66aae7be4e34e3a1ef1772..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2582 zcma)8TT|Os5dLHvWQ4c`b7?N5rfG?R5VuX!CYaC?APo(W3oeA-QXwBei7a_+8NyF# zp8ME`G-=69Gt+jOhtBl5Kc~~_cO=;s*kSs>IXZiGzuo z#&jUE4QD&M>Xj{LJJ&3kA-l5mV7<49Ug#WNg}pM6W4!f-0t`FbK$YoE3p%bQUU&y20nYR)ZC zwP(q4#7eceDav_+AxLA_H0(8_Y{_#dOn5sMV;amfC!6!pBxk%oY`b5o*-y7H{GTjI z_|9$NE!NZP&y2N7uxr&b%ttIx7_({=3hQpUpx}Jy{rG~6EhFF}EKyIR zuoq>l3dWCbmV2)2H5z8(c;#8s6qSlw&a-^%o3>rUuF`1``)m6#u&UYISX@||*KrPS zD>%_KK{`(1w2l$HrJ(m{tLpd)U+ee=4^(`s!@#D3p`#VKUbXCkC@aus3k6X~@39(F zX&ok5?(ST=Q3xp&*rKDO7&^AGqr%eh5IG%>@PMWb!?e4VChuvEWO~c3Is}eMF#8DD z?ahZm_I|2?pWi9Fd%-kyny%v+9L-yTugRh628OvYJ~{DHl?Yd&wGVG24O7!^79CD* zzv77^FFoTJFcDQb0GU`fvn zKsh)Z+XhFWs~T^I15}`vWVkj5OD&6%ZOCV>y)26Eu3+D^^S=T3V8>)5aXsUohH;jA zCltKNzjTF{nrt!(RSMXQT;Jj8I^z5SddFWt8Gnh`#tX!MM&d`xVi@JxO%0$A38c`2 zew^n?4{VU}5hdOjwI$wt?lJC~k2et_#Un@qL>fc~hJ2*KKs!XD9mbi4f{D5pDH*0D zNbCYVP2wWY(%UuP8t8w9wm;GJ6739MeU3JspYlGM!D&);2E8OE%Nu6hOOSW*UI_I! z!)oJ2etcu)kMW<7m^eW4JE*bAS3mg23kT>}e+KO(I_X63>pDO;b-Md{xP%71zvBc? z2k1LMDo)F(#N?}!iQnihK?;|NpTd&AFXOJi2h^NpSwJ!qq_T&_Ns+K&60}HSmPvpl zJ?$4FU#BXM_i>5QGiLrQxWr^-Vme~~Af@8+zKRcd`%yi^?`bbH%tSMMayY~O_2#HY zXp^FMxsQ-`xd&07BBfw467<|dE>nzXn30U&awOtRJ>pC~;!LZEmxG9};A&Wtr$m;` zWY+5O1m_|Z7^qcXu+F*iwAKC4Ybq3}n(US!sX?Els~nyw_F9gecn#~AiFB)3Psj`t z3Oj0oaZk~tHd?h&2)gNw^~O-ipIE>g$6!7Jtkr?F5IBZu>ctp>oaYn#n&JL2J$xcC Hi|hXZdNe?N diff --git a/build/classes/java/main/beans/Word.class b/build/classes/java/main/beans/Word.class deleted file mode 100644 index f23cb1889e7e8fb73ba049b7a7e7f85dac18f16a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmZ{hOK;Oa6ot!gkCA5JS=z|SuK=r1(qDqLzDgvoR0hV?$4O7`;$#L5LEGkhU zb-@qdM#28=CQ45a1)PaIRa&Jg)&k9!COi_T_4h{1dmT@tKxe45d_Ru@nSAtvkT>07 zJodwppD1%KF6-%6H4|`$f%Nsv`^1{`f7V~Fx_o1*i3|RTX-{Qpk_FcKd&^P^W`70i z73RjOO^Y`ReYKgfcy>6+OPTz(yk~%$f(SqZm3ERaAY)-kHiNI?43?G6sIZm<5*J|(y zE&iC4Ma<*g1Oef2y~C5oU2ty8{CVBAu z8rI;&HEN|zmlVdJPNNnLjD@k>$qsXFV-UukK zVq8bBNIs(4GU|-4M02v+9*6WGbLi!&Tcl=zB>24wr1me!W+lkOYLJB)_$2L1pZgq7?7 diff --git a/build/classes/java/main/client/MyClient.class b/build/classes/java/main/client/MyClient.class index d25d08d99d68224a4aa4f837bacc3914b090e926..ddec1ce27e963c72ea032de7a98340fc1152f163 100644 GIT binary patch literal 4872 zcmb_f>2nkJ8GhE+uH-ca0XBw&C=l?C0tS)_LokjgCX#Hhabl+pT}x|gVYMq(E5N<) zBT3KnNZa(j+q5N4YSVby>GVTCboxKEUpoEP>0i+4^V?n7Yg=~WX*8of-hJ=qJ$C>4 z-#7mV;3Sr#co?$^=42EU7z%DgQIDH4%qV2c$|x$Z#HB3`r6?k}6@i0t6fP^= z$<$n3LVwzJ<`U(SV_0*uj#kv~*v`$w9epN|GY#Ex6IVm*XC$D9 z32nwCC6=~xnmMUChPV%i4Q|1pp-A?<#C7$Lj)vJPo@s}74z3Z--s)Fm5M3OwFl;s-kJVoU>J<#3E ztLkIYOO+~}SF7}BUN?1D_ubjy->g1uTbq~pQZ+Yc->yr88xwSnZtl$JZo$rvX##my zcbKeZKj>Q(;x6HG*G9oLS=v@o3c8l}j2zwE?@P?*C7(~^(a{4>j%+Qml6i?p?F~7d zx|`EWu3=l$R$p;U2`ArqJ8C#PRDM9a5S+xeK7BPt%l zS>;TD(+Yo1q*UiRaU7b*Mmd&V*53U1sK$Fd3yS0o$=YxW@wc{YRV5+13wFuW-kYF!yWRq-?YT*WW&O9_X! zl<|94?h!DMnR?+v@?!+1u-Aa>&gJI|6` z>q)?}PB0Ywp;}4xDlenw4Q+yZkzovtjipD1hbBfwv)3<=k7il1n-BaILB_MAth;=1 zadpe}RS}lAw&;blW*i4`)Re8bhMCAzOxN&Ujkrxb`4+KsFWQb@i4w};)CCy`fm^k( z+6}{|RxY0jzvomFUegUPX=}@$2@o45!y?z_n8&SKmb=ich*zue)YZw6;nekO*`djy zk@V1obV|Zo>}p?_2D`RMuoxx*qbM4czJ(H`ZJnTZBpvl!F%ptnTME)#EA#ZaZuF^j z8miE3T3GAiZt{n)m#bB{gOaFel^-h+{((AvL~xq&YCpeXPC>$Hk1D=WB(Z3Dd>1JR zo+X|edzK)*=CLGsZ1RXQ&hT3G88C>myo=x*o}hXP*FA&=L;oUxeCsA1&Dh?C4)aYiwt-A$Tc#?2+;y*~?B0V^Pf8yPI+Ca;H!zI!hX?Fo5 zq&3mw_by4VWcY=IQR63IJB zZxqCFl`zziqZJdlMo+sL<|Ljbjh^BeN{Zi@mr%ZY@>+C;&p$=}X;RoX1sTtJfk)~n z1hNC~;lB>=WfJ&)7bM|%x+qki7O_@C?Y@^@7b^Q_^H5u`gQ5C07V}bij+7@D!g=(v z7DRY$w9*=cB0Bwa5K7=~w(2f%67Kr0zK^c*oiK3q-&8H|n%){OAFUpNN33@N1hRj7 z$Q>tARpbs46R=PfmS`)Bvx8-MgynXEr8vOsk0KjFuV)3ljsU%Z5PH)q=uK}xPw+gOgEQ_U>GeJsEZmf$G{P{pz% wgys3QSUyvAejSzyaw`M>uvc_I^D-V~?;U>~aWSX3sd)6qeuQ^<-qk_>9|bWA(EtDd literal 3872 zcmb_fOLr8<75+*ZP4_e{9wP)u!lto72!Y(fBnFRw#K?e+M*<`V0yqh+nbJ(lJ>BE( z9)#i~cAkFa=?8Y=x7S&aECeT6&Z1VW3XGR(!1qn_@=X6(B-MaU? z_kQCgZE-R}W>0iPMziwg$6iiA0-nIUQfq@pS_o_=bin1~N(@14lik3=E)< zK@rlxPW3sBl8&;Pb~VhX$>()=Ix1?)*Ab|9Rmr`e%!C>u1KX9#?TB^M3|z&mhHD1q z@J$Ub>iCwL`nLN1jvBqB;bjfq6-Xa(eK$TP&_1yDyg+I+C`y41dDoZYwaSzXpLM1@ z&SdjJ!ST*Jp{u?dlc~7uMgp7i1<#d!Y>&;2CW8?wsyMDMuw~$Ke#W`#*q-B;?8!KE z{nAKc$O%hV1-e#PCaAhTfrs*ipkhZg-=2|SBe>xs3#K|F8D5p)6UAaEBf`lp zwY&Hms0%m?nI(}qd;1>n7l5DK&1ko^| zRcnn&qbNNY%esbjO4)>bp(dkPz#CW<$jEYsTCMM0RY8jV~Hrzv#*E#I=H~ z#%|!#!}eO}35Z#Nb+dAc8iQI`pt3!8QFdWbkQzE%p8*l*oQ$2q^J7jmVUdRKk>acn z4c{kI1q_CAAv#y?D?0ZS5rd!>>~+=?weW3BCT^Z|RSk4D`TdBZw249NBYG1*zz+qw z%W+)I*|w+Zq|6NG4jepqh^1r~-GYjt6Oz6~QpZ?i4w*%Q6Mzf_#vI=wO$u=s_-?_f zIE6B+(2C1WY!$c`#X%@7X2x>DkmV#Tk440pN>KCT$O@({*Pjl;ilfXacs~-@dS~?= zuen}Ph9+LYt0rE<>n4t4RKpu4evF@J_^FAX;pYO|T5&Tab`z+HbC?j=c&B0$zrdTU zzSez}py*D|2^{s@IQFD96`Q>r+TW1kMX97PwbjwHV)A^~!0H9WdfqdzLSMR*6-l#CGvLxE z^@mp2vUi!521RK?kAwP|!I%-$GUZD`GC3E;vcgUks4ml8mv#gDEDxQSYNS)4%C1Do z(rNbZsuJ>eVs)5JC3w&=M(OWSgpB^xtMh&>I}y-SwY>cL{fL*7aqOcNuo4EGrN{xya^PvBz=*cnFXEJJ;cz$fk@^om6H9eQ4K?h^VvYYY7adT^0Z hyTnjmX6T>$e}=w|{8v5oJbuNuL9}!Hhx3;Z{{+-RsbsL8`1TB&uM_RmR1Q?Eh~t6Q#-&`ScE4xrn8z~@e(GDkH})ML8soS~ zoEaH?s>X?xyq~5VQXm7+39*b4iSX|^1KbO79}faN4Dkrt4BP!wjD}6LCbWjpjfr!! zJ8yT=GxzofAblIYViw}F8iz^PkH{AS)sZx)31W7s8Xy(Z;_GVnXRX59UHWJ H3fF+&dr0IZ literal 0 HcmV?d00001 diff --git a/build/classes/java/main/server/Dictionary.class b/build/classes/java/main/server/Dictionary.class new file mode 100644 index 0000000000000000000000000000000000000000..cd1f20bbda3adb097b1d601318a67e0429061d8f GIT binary patch literal 2091 zcmaJ>ZBrXn6n-`dY_e>53ok+|4c5{GN`qRoC5S??7MoDoAd&hqvt%!@ZL*u$Y+(2) z_Ol=TfR54`JEM;M=4XG7Y7=636{GK8@pn+^wnj zOvOV5nrW3i%drjjNI^3H%s4Qz4bQ4%9~kxhf>FyUNEEF-+wdB$P;j^1V=*vQ40|tI z^jyo{%e7mUh||4j*_OAYAezo>DTv*3Od|H>EnBQNsyo8nGGQ+xX4}_atJxiO&s$rTX$2Aq)NVmssw`A57D2FnV&$l^s9uVeI(KE`=N#Bpo zLaE3r=r0Iw-!V4~*Qg3lxXfp$yieXj245Ask{@fSp!dKMhs}nm4tZrdMb}JGA$GuK zxYI3`PAfVMw=C{kvRr-VrMM;OC>VRvusy3Pwye6v3NG8W;~6qBCY;VY?q0TDlRE86 z9*2(mJXmR$1h9T)~?P2HHA8#~T>aQNX&6N7zvDSjQ6-6^vdi=1Rk= zn8H<{FPo+?Qw(J;q;zcJbCxKVIxmp4ZlS~yU&PSy1-4Z@)$t|fbbN&kUOm5y?%Ok9MAkvd5k}kGZ+;I)_0Q_LLplGc3FQQ1E56C=p!D zWuCH?YYigYY1Sz`Z4&p?zunZ5Pw|K{REgaWW&$D6>VoT~T!o z1Sa_b8|84;tXjwv(E1-Y+C6wt`h-|+^^k>9=@V&2cl;1EQ zff#y_;z|$v8R0GN6kNmG^pIG8(Wi^^=JfXZAJab}HgkfmZ=ptJUw`j!Z=RsL^dr<) zh%-!LP&+{neR>9U4&jAMzoVDC6ZD;+Kgyd6vDw#SvEP_yj9d!DPa^Nn1w8iWC}f@! zP&xL}tB=2adJU3g5^ETu*NC5ciYUx4%w4XoW6I~Vi5px+kmk9L$lpk+$Q-Gd#tbcq z2pvHeN%-a&;qM4138$M0zi1^qP--VJ$va6VBlm^B#`D#7GJJT38Xs_D0Cz+i(8>$#|$LZEuX6O0@s@K89db|d8UYR-06JiKlE$T z^q64+jw61}uCtw{kYUy{97`;8iXJ0DI%oXKAwMY#8+FE4qf7DCP>{u3NMwbxB%*~8 mhf5b5ILj8EYl@+r#n8eSQs@vmf_J!y;9b1OxtpTj2L1(Jl*Y3F literal 0 HcmV?d00001 diff --git a/build/classes/java/main/server/DictionaryController.class b/build/classes/java/main/server/DictionaryController.class new file mode 100644 index 0000000000000000000000000000000000000000..ad040761e41f471c4c3036642fca0ff300c44dc9 GIT binary patch literal 3602 zcmb_fX;%|x6n-WwA;}0B5XGg9in58*R>cLiWmRlg1jM?uc9OinK$wX$6OdZF+3iz* zLw|zpY0p1pdB8I(~ zjAIJZaa_lY9L>fthZ`}><7OQ1;8p^+aYv5s%8hsB#(Q#fuL1ANWj%^a9L<<$KvuqU z4G{9ZAP+4@u@r@&Af7X_u3?$Fy`i8b?Ff5K*xHD{IG~{ZqG1~DWd&_r752O571Rz} zIia8_ZJ1)RxSA36oSw;ZC7HIedVXHF4LL6_*1AiEqu|g^Wy6-~+EzXJmNo&ZRATQF98mVJArwASahv*!xlMOit4%CP0P+viSMDD4|G@5x#YS9ZALf++7+V&iP)^MXzFg!W~i?HN7EP6%lewG<#lsWo41VI zz-59tQxW*O$Y>eE%!T7HZ8$;9AD_ByL{*P%M%*t7#~reAGQiE*CHg2v#DYvmlCI!%^==kJUPiT5 zD`zY);dd~hdS16jZuFRzuN`mB0ae2jj$WbgSxc+~Pgy}8=l!R9wi7O%$iG;=g zXb)xTJ|f)(+sYNQlJ2-G9=KW|uNw?=fAwM3-KDMDPE_YPw{jNt88}GAhdCEsa{cx+~qhglna( zbzu+d4r$%J1BQam3Q4(BQ#Wh((Ms*bYXw)?4_MgUBJWM(AAt7^r(Vk z6?61&a!iiS=c?b{Y1mPmvaN(Hj6M_UxM|YUyzV&i0^jYb%5c>kt|MfOa8FeUH!Q~X zl973%pqF%2sera3){26&)r*8}QoOa)H)Ns&$*LeGnHrnAF*!ok)(o*8-aK9*Eh=W% zwuVtk-xq2a_3WX-WJvm|vRG!DUNyMZ*45ZkNpv2E`3bp?pOpLxlf{CgI*t$EAZl=k zvoS>Y3&eY#Lh0%K5s~jWi{KUhZR8oC3AOxQjA1uk<*coA8Yya)KXFehn?A>NESh{B zB`peTIgg5L58v8RDe@ z1!_DrN#c<9TRe~UQT=`oQL3cWN7RQ-bkT4N_q)+UyuFkopg+*zL{ z=l;Q;^SDsv=Nq1v{PdUksolh`i4(semTY{6rYFCk`PNhHP9`_eLfTrAt^9L>&nEWB zeM*Lj>Ve9@H#5p@jI2zZ5>fp=QT-%pfDu(m(nXF+L^VjF+M>9$l~Ms!mp!W5DDtN7 z+FKa(C>!#4QYBBrd^Cs36*itN=hBprdEOd0*A~vPQpU%8A{%y8Y(QNFiUb06=_Eri3br&c$={+9s8SdF z0DctWT-zm~F|s^&=H{MrzqwYPp8q}q*u|!U0zQ_I$0u1n+xTK*Lm@v3O;@4Xy7q=% zv+o7H=4oX7ptq;sboHel_>mt53dQfT-B-xfx6Y|M2)kOL(((g+e0$T@=FDsNnW?tI zj@Li;j4$UjnUAjgfkL@8&}OJj^MXy;;A?%l?Q}-ksS#gt&L8RMD(s$k#=FsxHZ-++ zIubvHT77F;&4R(df~Aap;$Ei3;ly3bR7{?o)9}`G^bcPySdwNtGA(4NF|#BHzQhP#c%%!lJ$&~w_X(f~CLpIaI^b)3Z`8U18B(qZStjLtiX)PYe`U`5ygChU{ literal 0 HcmV?d00001 diff --git a/build/classes/java/main/services/DictionaryRestService.class b/build/classes/java/main/services/DictionaryRestService.class deleted file mode 100644 index 1292169ebe560328fbb7941f79d61a7093e2b53e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2725 zcmb_eT~`xV6x}z841@_EA!^ZzQBVQJk=C!OwL%D%HV_2FTHD$oxxhd&LuV#{wO@as zuYKxIuziTGcCEg4t^TKWb>B=N8NOB@%3935_uO;O+2`ziFZ}h-Z+`%|jvwMUiODz~ z;=?$m@KGEeBd2E5$~M!6JZ9r~gt<88v7ly;)yAUQc%o*XwBo6TPvhvsWGkMj@v~NZ zuEsCa{&NjqYA^*_?pe0w-xr7u4lN4AGEPwnbmlBu&Q!`v(p@l@O0*<%PQffKny#hR zbz{t5wLF1z&Xew@Rgj)BVHJGKu}$~Iob>$pzcdlalR#`4up2Z5rY}@fog_Q*)LnvlVf0faWZJMPDD~}TTK9~Ib0$omo&Se;@ zQkEV!y3CD@l2xe1H`YAIW=oq*+vO6S3ah5QA}8dsqJT)qM%gJ^%P$1FLy>16t89rC z={GxH9IQDRB}Oskeb=&A>irCv*t4x#=YuLkdm0J?amF=XDxYunCVrURU*@dq6f5MK zh~mE7_Kl5_X%YMRaD!(}*DOn4x}i>=4A;d@*ZfqhqAbxp5Q%YUX@^NA5ggyGBNa+C zk9DY>^SbhL z7Hb;Tb=Yt;Z0Pt3o(5k>1)Dmyu&v_-)^vOgN5@OtpmtQHX^Jpy+37|ufs-nKGfU$Y zt5lS(Ku3f9w6mPn@eRmWT_h@W3tlj=5g?Y&GPuRvM??bOMX z?fIr%VDnOgLkHc#c;j;O*7HO_sPb;)t&5c*eJAH^NjGD940-7Q*7u(p;{8smSO-dB zfH&W-@J_evO!O(+W`>gKd6M>ynf$`@u}mgAyD&DM%Tl)?rG%cKdNAsy_t1pQ#Fo@j zcJ4e~yNu<7ijG2h)Dt+cCm?|g9SUTxGheVJr5u4X_2wT4gE1q{y1>X$PJ3hXP%3!6 z6uk{u3bd*APUauaOt96PmfULIY~dRyZ6X>ufa(1Lskf2IT773ng~ty%x`=Z)!9SVm z=NN>#ul%0k%HSxJb@(;JFPubhn%|b1u^n%7t_Kb{gFdbVuX37R>hO<{t)BF5oZ6)pGAM1Dr%S7>k0T1DHdH;Ai&-qBiy69fWu^L!F1^bk-A{RF8p4hK=| z8P)n6&NFii7wI#=>?wL);3|qs^lyXs8~qvv$v>BUG!N7LvWF`eq2a1pJVV5T;o%w= zqyMFZ_MH;+BTMKbtg{4^W(nsAum688;T^miD&ZQdUx{}>hB*{!N*~8BWf2&CCCF3%~TtR{@>t@SR>{Nq{(Ooh|aTB)) zAV$A{j07pUKwCgYyCNe+GBn(-(Q&##$9uR#pmzg0gok^0pKD!7@V+v7j4k+1Kd6`X zl%+-K(bH7g@rIHDt#;I0ZW7QfYV~#vbUHY;3%X|)bY~s35=tk-*M%~MaT@lci6TRL g1QWGVSliBlEXv$Sax2e&FG~-4`Jd(^xUsf>0Z{CSMF0Q* diff --git a/build/classes/java/main/services/StartServer.class b/build/classes/java/main/services/StartServer.class deleted file mode 100644 index 1bb409223904dac815326f921e8b5e594f3f2450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1306 zcma)5+fvg|6kP`j2{8y3LB(6~T0k2S1q%u)id3sb>fnPvI@4t+q! z2S31%a$F~cf?8*sPR~C3lD*cxoF6~GeFty{YYql6Zeha4q=Or{>7W3w54SL7;V-AnPN6c{Lnk$lyxZ%FmV->A`&Eysah zTlZCH^nGJSZ-fD(G|mW| zG@1S+PQnIc&hu)f=IuDqb5qmPvz~>AE*{~rg(VkHaK^$@7t46Yezj=iR5Oa$`Y{VD zE=qVVkl*)k3`)z*TpZ2iI%XFbUI}$hN!?UYPRF@K$Bjav;Nk_!7GAn|g^EFy(y??{!%UC(cXUJyr` zQCJ$7+}33Y7FUdp(=)Fzo*t;n)HEKj$palQ#0V`l`E$mUV7$++>x*Ep(Q) z%2%NI7NlS2F19N^VivF(CaA_G9qvS%FQUtA@L|$Y)M$1{dc@4NCnQI}7geHS=17q* zjjv-2U3~E1If@g=g0xcYB=up8wDnVr5N1Vrjxxfd6qG#^Um!lEpPc2{n;LDL%&FlQW)SPWfyIW+3v5%lqdJl^BKKaYY(=Oef!c$<*_}uZ;iR1>SXsGjvHlw z$|39o9Htu}{2*^x{)STimsr6#PGO47XUKhlRzq#11<&d)QR_t!mvM!3uTslUUgQ5d I?_J3M0&o~Th5!Hn diff --git a/build/tmp/compileJava/source-classes-mapping.txt b/build/tmp/compileJava/source-classes-mapping.txt index 53fb069..05efc40 100644 --- a/build/tmp/compileJava/source-classes-mapping.txt +++ b/build/tmp/compileJava/source-classes-mapping.txt @@ -1,10 +1,10 @@ -beans/Word.java - beans.Word -services/StartServer.java - services.StartServer -beans/Dictionary.java - beans.Dictionary -services/DictionaryRestService.java - services.DictionaryRestService +server/Application.java + server.Application +server/DictionaryController.java + server.DictionaryController +server/Word.java + server.Word +server/Dictionary.java + server.Dictionary client/MyClient.java client.MyClient diff --git a/src/main/java/client/MyClient.java b/src/main/java/client/MyClient.java index f0cbf41..e3db193 100644 --- a/src/main/java/client/MyClient.java +++ b/src/main/java/client/MyClient.java @@ -1,95 +1,91 @@ package client; -import beans.Word; -import com.google.gson.Gson; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientHandlerException; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; +import org.springframework.http.*; +import org.springframework.web.client.RestTemplate; +import server.Word; public class MyClient { - public static void main(String[] argv){ - Client client = Client.create(); - String serverAddress = "http://localhost:1337"; - ClientResponse clientResponse = null; - //POST + private static final RestTemplate restTemplate = new RestTemplate(); + private static final String serverAddress = "http://localhost:1337"; + + public static void main(String[] args) { + + // POST String postPath = "/dictionary/add"; - Word word = new Word("computer","an electronic machine that can store and arrange large amounts of information"); - clientResponse = postRequest(client,serverAddress+postPath,word); - System.out.println(clientResponse.toString()); + Word word = new Word("computer", "an electronic machine that can store and arrange large amounts of information"); + ResponseEntity postResponse = postRequest(serverAddress + postPath, word); + System.out.println(postResponse); - //GET #1 + // GET #1 String getPath = "/dictionary/get/computer"; - clientResponse = getRequest(client,serverAddress+getPath); - System.out.println(clientResponse.toString()); - String response = clientResponse.getEntity(String.class); - System.out.println(response); + ResponseEntity getResponse = getRequest(serverAddress + getPath); + System.out.println(getResponse); + System.out.println(getResponse.getBody()); - //PUT + // PUT String putPath = "/dictionary/modify"; - word = new Word("computer","little box with many wires and a huge number of bright lights"); - clientResponse = putRequest(client, serverAddress+putPath, word); - System.out.println(clientResponse.toString()); + word = new Word("computer", "little box with many wires and a huge number of bright lights"); + ResponseEntity putResponse = putRequest(serverAddress + putPath, word); + System.out.println(putResponse); - //GET #2 - clientResponse = getRequest(client,serverAddress+getPath); - System.out.println(clientResponse.toString()); - response = clientResponse.getEntity(String.class); - System.out.println(response); + // GET #2 + getResponse = getRequest(serverAddress + getPath); + System.out.println(getResponse); + System.out.println(getResponse.getBody()); - //DELETE #1 + // DELETE String deletePath = "/dictionary/delete/computer"; - clientResponse = deleteRequest(client, serverAddress+deletePath); - System.out.println(clientResponse); - - //GET #3 - clientResponse = getRequest(client,serverAddress+getPath); - System.out.println(clientResponse.toString()); - response = clientResponse.getEntity(String.class); - System.out.println(response); + ResponseEntity deleteResponse = deleteRequest(serverAddress + deletePath); + System.out.println(deleteResponse); + // GET #3 + getResponse = getRequest(serverAddress + getPath); + System.out.println(getResponse); + System.out.println(getResponse.getBody()); } - public static ClientResponse postRequest(Client client, String url, Word w){ - WebResource webResource = client.resource(url); - String input = new Gson().toJson(w); + public static ResponseEntity postRequest(String url, Word word) { try { - return webResource.type("application/json").post(ClientResponse.class, input); - } catch (ClientHandlerException e) { - System.out.println("Server not available"); - return null; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity request = new HttpEntity<>(word, headers); + return restTemplate.postForEntity(url, request, String.class); + } catch (Exception e) { + System.out.println("Server not available: " + e.getMessage()); + return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } } - public static ClientResponse getRequest(Client client, String url){ - WebResource webResource = client.resource(url); + public static ResponseEntity getRequest(String url) { try { - return webResource.get(ClientResponse.class); - } catch (ClientHandlerException e) { - System.out.println("Server not available"); - return null; + return restTemplate.getForEntity(url, String.class); + } catch (Exception e) { + System.out.println("Server not available: " + e.getMessage()); + return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } } - public static ClientResponse putRequest(Client client, String url, Word word){ - WebResource webResource = client.resource(url); - String input = new Gson().toJson(word); + public static ResponseEntity putRequest(String url, Word word) { try { - return webResource.type("application/json").put(ClientResponse.class, input); - } catch (ClientHandlerException e) { - System.out.println("Server not available"); - return null; + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity request = new HttpEntity<>(word, headers); + restTemplate.put(url, request); + return new ResponseEntity<>("PUT successful", HttpStatus.OK); + } catch (Exception e) { + System.out.println("Server not available: " + e.getMessage()); + return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } } - public static ClientResponse deleteRequest(Client client, String url){ - WebResource webResource = client.resource(url); - try{ - return webResource.delete(ClientResponse.class); - }catch(ClientHandlerException e){ - System.out.println("Server not available"); - return null; + public static ResponseEntity deleteRequest(String url) { + try { + restTemplate.delete(url); + return new ResponseEntity<>("DELETE successful", HttpStatus.OK); + } catch (Exception e) { + System.out.println("Server not available: " + e.getMessage()); + return new ResponseEntity<>(HttpStatus.SERVICE_UNAVAILABLE); } } } diff --git a/src/main/java/server/Application.java b/src/main/java/server/Application.java new file mode 100644 index 0000000..ae0ca39 --- /dev/null +++ b/src/main/java/server/Application.java @@ -0,0 +1,14 @@ +package server; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + System.out.println("Server running on http://localhost:8080"); + } +} + diff --git a/src/main/java/beans/Dictionary.java b/src/main/java/server/Dictionary.java similarity index 60% rename from src/main/java/beans/Dictionary.java rename to src/main/java/server/Dictionary.java index 7553e39..07ea517 100644 --- a/src/main/java/beans/Dictionary.java +++ b/src/main/java/server/Dictionary.java @@ -1,34 +1,14 @@ -package beans; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; +package server; import java.util.HashMap; -@XmlRootElement -@XmlAccessorType(XmlAccessType.FIELD) -public class Dictionary { - @XmlElement(name = "dictionary") - private HashMap dictionary; +import org.springframework.stereotype.Service; - private static Dictionary instance; - public Dictionary(){ - dictionary = new HashMap(); - } - public Dictionary(HashMap dict){ - dictionary = dict; - } +@Service //Spring automatically makes this class a singleton bean +public class Dictionary { - //See the singleton pattern - public synchronized static Dictionary getInstance(){ - if(instance==null){ - instance = new Dictionary(); - } - return instance; - } + private final HashMap dictionary = new HashMap();; public int addWord(String w, String d){ synchronized (this) { @@ -66,5 +46,4 @@ public class Dictionary { public void deleteWord(String w){ dictionary.remove(w); } - } diff --git a/src/main/java/server/DictionaryController.java b/src/main/java/server/DictionaryController.java new file mode 100644 index 0000000..0ca201c --- /dev/null +++ b/src/main/java/server/DictionaryController.java @@ -0,0 +1,54 @@ +package server; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/dictionary") +public class DictionaryController { + + private final Dictionary dictionary; + + @Autowired//tells Spring to automatically resolve and inject the required bean (object) into the class where it's used + public DictionaryController(Dictionary dictionary) { + this.dictionary = dictionary; + } + + + @PostMapping(value = "/add", consumes = {"application/json", "application/xml"}) + public ResponseEntity addWord(@RequestBody Word word) { + int result = dictionary.addWord(word.getWord().toLowerCase(), word.getDefinition()); + if (result == -1) { + return ResponseEntity.status(HttpStatus.NOT_ACCEPTABLE).build(); + } else { + return ResponseEntity.ok().build(); + } + } + + @PutMapping(value = "/modify", consumes = {"application/json", "application/xml"}) + public ResponseEntity changeDefinition(@RequestBody Word word) { + int result = dictionary.changeWordDefinition(word.getWord().toLowerCase(), word.getDefinition()); + if (result == -1) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).build(); + } else { + return ResponseEntity.ok().build(); + } + } + + @GetMapping(value = "/get/{word}", produces = "text/plain") + public ResponseEntity getDefinition(@PathVariable("word") String word) { + String definition = dictionary.viewDefinition(word.toLowerCase()); + if (definition == null) { + return ResponseEntity.ok("Word not in dictionary"); + } + return ResponseEntity.ok("Definition of " + word + ": " + definition); + } + + @DeleteMapping("/delete/{word}") + public ResponseEntity deleteWord(@PathVariable("word") String word) { + dictionary.deleteWord(word.toLowerCase()); + return ResponseEntity.ok().build(); + } +} diff --git a/src/main/java/beans/Word.java b/src/main/java/server/Word.java similarity index 84% rename from src/main/java/beans/Word.java rename to src/main/java/server/Word.java index 816f9fa..d649829 100644 --- a/src/main/java/beans/Word.java +++ b/src/main/java/server/Word.java @@ -1,8 +1,5 @@ -package beans; +package server; -import javax.xml.bind.annotation.XmlRootElement; - -@XmlRootElement public class Word { private String word; private String definition; diff --git a/src/main/java/services/DictionaryRestService.java b/src/main/java/services/DictionaryRestService.java deleted file mode 100644 index 0170335..0000000 --- a/src/main/java/services/DictionaryRestService.java +++ /dev/null @@ -1,59 +0,0 @@ -package services; - -import beans.Dictionary; -import beans.Word; - -import javax.ws.rs.*; -import javax.ws.rs.core.Response; - - -@Path("dictionary") -public class DictionaryRestService { - - @Path("add") - @POST - @Consumes({"application/json", "application/xml"}) - public Response addWord(Word w){ - Dictionary dict = Dictionary.getInstance(); - int ret = dict.addWord(w.getWord().toLowerCase(), w.getDefinition()); - if(ret == -1){ - return Response.status(Response.Status.NOT_ACCEPTABLE).build(); - }else{ - return Response.ok().build(); - } - } - - @Path("modify") - @PUT - @Consumes({"application/xml", "application/json"}) - public Response changeDefinition(Word w){ - Dictionary dict = Dictionary.getInstance(); - int ret = dict.changeWordDefinition(w.getWord().toLowerCase(), w.getDefinition()); - if(ret == -1){ - return Response.status(Response.Status.NOT_FOUND).build(); - }else{ - return Response.ok().build(); - } - } - - @Path("get/{word}") - @GET - @Produces({"text/plain"}) - public String getDefinition(@PathParam("word") String word){ - Dictionary dict = Dictionary.getInstance(); - String ret = dict.viewDefinition(word.toLowerCase()); - if(ret == null){ - return "Word not in dictionary"; - } - return "Definition of " + word + ": " + ret; - } - - @Path("delete/{word}") - @DELETE - public Response deleteWord(@PathParam("word") String word){ - Dictionary dict = Dictionary.getInstance(); - dict.deleteWord(word.toLowerCase()); - return Response.ok().build(); - } - -} diff --git a/src/main/java/services/StartServer.java b/src/main/java/services/StartServer.java deleted file mode 100644 index 6aab087..0000000 --- a/src/main/java/services/StartServer.java +++ /dev/null @@ -1,27 +0,0 @@ -package services; - -import com.sun.jersey.api.container.httpserver.HttpServerFactory; -import com.sun.net.httpserver.HttpServer; - -import java.io.IOException; - -public class StartServer { - - private static final String HOST = "localhost"; - private static final int PORT = 1337; - - - public static void main(String[] args) throws IOException { - HttpServer server = HttpServerFactory.create("http://"+HOST+":"+PORT+"/"); - server.start(); - - System.out.println("Server running!"); - System.out.println("Server started on: http://"+HOST+":"+PORT); - - System.out.println("Hit return to stop..."); - System.in.read(); - System.out.println("Stopping server"); - server.stop(0); - System.out.println("Server stopped"); - } -} -- 2.18.1