From fe75b4d3f2c824d4f6add524d67c55abc6796f84 Mon Sep 17 00:00:00 2001 From: kl <632104866@QQ.com> Date: Thu, 16 May 2019 11:07:18 +0800 Subject: [PATCH 1/8] add tech-support-qq-4.png --- doc/images/tech-support-qq-4.png | Bin 0 -> 7285 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/images/tech-support-qq-4.png diff --git a/doc/images/tech-support-qq-4.png b/doc/images/tech-support-qq-4.png new file mode 100644 index 0000000000000000000000000000000000000000..398a8c509bfe7c62ddba3b41593495eecce38b6d GIT binary patch literal 7285 zcmbtZ1yq#Zw#T4bhfWC@T0)ctVd##bLmKG@DFFo>7+Qt_iJ@D%L&PBj=?+0cx&=h) zef;0M_uX~h^{)5UTkFiM^X+wF?|t^!`?vRbtDz=Oh)0cwfq_A&s35C_fpLrH=7)0| zptLjDfiN&=#S~?wb$n-b<_TRvUa8$~m<|rgq&_B=-(kG0yC@RwkIznIO%_SGpxy_p z*!o-*U5F$+rexpHNM&|+d6Mc#{52+~rgy#;Qpqf#k*{bNTh`u8zK+D@!zYcDHh&y< z?oDskEvAK%Uf>eBc0D5Q0Zo5~!jXEPhmb;%K;Ari0KVRc6Q5uoie^H)+$Zja0?7|z$UjqTk%|L*1Gw^>mbqVP#SWMa|?pVq#zrXWy-?*T@ ze}hhM#T34nX_*a%{i)fyKfAlLa&+`M5}nBF{-HY40rM|Na+ zXr_T*zxHA69x8tvnZ^&1WOjEcOU6Cq9~SSH)dbZ>0~$ysy^)EV8J1mW4bUK(eUTR1 za+a-0K^aVNFHk&9f8_2fdD@J;Kk_>DnjLG0C1$sXJgUHQC5EYK&woXt;SZX+VUNaV zpRtJo@7&KgUUXzV2nXxBQ?MtD^N$;VVOL^$`|3Z}gFa%y4Ti$CvW1LU{&;q(DcPC4 z+C$%hBt^S(npb-Wb?!R(%KT9+5I&qc1RcR{mjNd|gf^d-x*a^R)&5e%zn&5%+(O#u z>?4US5PCw5J7c`%sQ=1z4I887x-pP{HJt3@D8Ro#plB+fmJ7MSj=hLneF=kKCP9v8PhA2hs*E{>IiZ?! zl4lh76_ofsi6D-wsEw!R6j#E7bV zR8qlIax-JefZMPJ%+4+hM^v7yYbK=Oa!t3cMTN-|(O&&X!YirBMp|h*YJk$n(d$IM zf=h8Spaqr{jUD59Kl#OgE-|kx^JKtlyCHy42d~ z(?`kenqAg0{0x6# zg*`>+-L>pokehpBJY?ukbgUB+pJlqzTrN<3<2v%sv4o`fkEGW6BD|bBJ%^6Vc2!%Z zMwkUEa`)M&U0Sk)Unv$O<4Qlh{2r9kR3CV_z)SUQgDF4BZT>@wuYX$a9p|nUd8!Yi zGgiG7-pr!QZuLh;N5Camj##QoZ$8AUHxM#vbEMi|v_-~Q;E>`d!*rpljMO{QB_9l5 z29%l&?#%kc;nIbe@X*cgDCHA-zd-lDKX)0R^}`-T1P60JWIJ|>P?R!M9vSZ$s8FW& zX|wE(0S@y(D!y(yf^%}Z0aJH0cVKelM8GhmMrEDJ>PsebQ|+=FcxhBHRi^$HGGO#E zvrF4Of0aFlYY!DQnkixNJZ$a6UgrKd`df;hawYnS8p`B3uJ7bRjb}9UlDs#1BreMR&_?eRE0P7R-)cX_t z?X$#ZP!?9hmo?qJa8!E9_C3)b*4GXW4iLVF*a8A7mU6g#^hj7 zZn6^CP|o8tr)?$R5y@#&S|4tcp{wl|AT^sQIk$?3w^AAkQ{n%f88q85cZfq1!n8## zG{RgvRFCEJngIv-fPueyvC?_MxJCyTT_cYjZt`?s*H0La2nzVfEYRuB?BpU5LT}g2 z-yuaL?AI|nso{iTnADg-Cj5+cl+#V;w2tvJ8}Skxxwg0YiGNJliLbsYb>bQ;C4?}s z&=OCwB%Oz9eAdP{j(f^tOsBUWMLjLFaBHy%M-Gcbe}~ zJyT5okO$q+kyn4}Nt!@Fs<0WBJq{^5Pr`InK#w=+8l-sV=o%|V>uAJ>^HIZd<(0#5 zKBJDa+7jp9{8W(0RqRb-6|l*Dqh)nErO4a;=>gycv0|2Fh{ac|Rf0ECRlU2kMZfwU z!H1&kM=-K!J>wT*2Zx$9@}X#o|eYjh+K5TI{F}qC-gpA zioiyeM{RGKxiT5yqHA2~o#U@30b-LlE1dOF>dFCJP`R*YanW1cek11{ z9rgM*icnAXDkh@mHbhQyq3mcmkW)|m4kg4UE2Tcbe%)2lOUJvmqw{;5rNblUrqhMU zYz7At?`dnoHm-=+i>=OgTXUoH;2AI`reQKoWrSe2zD1~TE|XHFT+Zc_vTH)W#Blx0 z;>Y}OCb(Qfs$fa{5=k7R6;{NN{3*8SNZwjSG=3WQs4+qFD$K+>f<_EXWDMAm6euwv zfjYoIV!_BdumA-riZRS2tW}jY2pgh(hUu$<41U~L&z@bOa?%jeEpe7s3vkhCw|1!sE<{6{%ggpjBFi^}8)X}cJaR`Apn2+A0mDyphZ z`_|K1hefj*p6rJ3F*$tHy3jR-u;0h8$+!iQb05qnrVtT7a~WaXef$|A7C(AKozEa1 zMpO5gLCBd^m&D(7)mJoERuG|t%#4=}j9dCw&Hbl}c5)JeYj!IBp5~O0*so{`vw#~2 zAqAq~F`ioNtI9W5w%d!Gh1MwL&!^g*!IP{NquCvyg8@8&{pL0#j~#sP+3$QzDAL7e z<3Tyq6YV#RLs4YLq>)dM-Xo*AGV$ zwr+PVLtLq-r~vN#uzkByCLhI+0M`uWsMT_Q74^j9x6I0!B*XqsAxt5_l?bk~{0Nloc zD8IE5y69JH3_RwHWp-W5o;>}L9~SY60H@@r`t*aD`H@{|O6Kp?mIE%ACr|iW4?=%n zFpG=e6vS}<1}CccTCKfQ`dYV&EyQi%r8GYQVche3E>Mt;Op!7T%yyYvO3y=qrggm= zI>MGd=G^ABn@~pdoG)rdiYUBSqe}qd>%C1BZDn!ChvB@-S;Z-O9xFiwmOyH zHN6Y*Cb{kTp2d`ciq}qv#_SU#dXgNenBc9dz8HXn1?DKJ%mphPx)H-nNk% zJP`DrTOXeE<~xPj!D}l7Q<*GHe+}M?sZ|%iHr!^R1edtf)RxU0C3rUQyw=kQ9z8R^ zt42%#xdu>rk^*L}9pCG=8KlFiuZ3~@N5fdTcqjuXov(8`7Gb4U*;J@W!2O+U3^@pZ zru$%#`MS5b#3#SK3=I6HCdo@eIbfCYl?@FI9f;NCmSdE7;rp$NjX8Nq7qNFLPx&t0 zVBG?A=uy$(%YgDiV{%%dayt;4cU5Ujj6PKkMRr80fZ6+>yo=gof8SrhN(oE~}O1dScrgFe;AaNh(Y3XbWbE!B~ z(<{sBGy{FaFYo1|9F$WjpY3sf*$sXyL(Nk#l!PPM>>Tr(+iRdHUAfKLSn~BcImIJ( zK1uP~!PV~e_2D*%^HO5$4B=Pj=X$MkeUer^B!Ip3qavk-Hl4l*E_Ik6|Tzpm&${MCmKY z<(fwTY-}_c-(l%0vK;OScJiu!I(cVIGO{z8LhdQWs_||BHyLLFnc`cWgyD6-b=X$> zpYARiLm$GjedWGFl%wrf_)5Wu|#$)Rj)QPW)$*h-0^<6$lJb}(TRHhbYFaaYWw;{fXD9bd&~X)qMC6wKF@Bk z*X-kwN>&<;(U{jU3N!jqT!`@+OzNFgUa8AVob3n}o9ONnl(DBbi} zAo;b$Ldifu^u{{{wTFDv5bwc0aVjsiOZRZVA89z39Uh7oHgj-v{?;^s0Z}{Zvz^(H zkdwKsVAIK*R`LNsY}kuw0iS225w+c$yXRjCbG7X><4%BFK(8&yq8@d508AI9>2roi$r0|7)A|N6~hwZWWARmiu^liSFNZsG|VCfp3 zFR#f2(+`)Wo6Nkx7s%`CV=lF3Kk(5rd({bKK#G?WyYx00c$*!DY^+uO+g4%NpE`j0 z0#?$}<>|uS>XfnsC$Vbu7_NQsLC>&DTP1@63m+4qq?9|iLCF1wi0Do6B9~@58h3+? zXY(VC>5?d9Ee*=<%mavhbDx+??aY`4EX0j69TuqMbK-wk9I8%E@xrQUwlfepi#I^@ zj#8y{Uot(hB!H;Lv51*HPBZ$|g|tOkbrX`_$4tcX$A`=D(;$bw!ay1Z;~-(K-a}}0 zYw(mlN2VeoL*`}f&RU%S=Z^xzLHPVJvCc?-;4#+5a8Q4W2*+sjlLd2x*f+SeYehCC zF^KszTee(zzR!?8xFf&CeQ@M)S|P~~rw^2wmF^#F)D@y5Z-)_*XkGazQN&D{EGf0j>toRDag&`$EU2FvUzldjCpaF) zUw%%;G6FcDX;xmnsj>79mr2=mnF>-D0uuC7)Ksm5-kxRj9*@C0{=nWLl8ST9s zYvEIBgg9BVE8?`6^U1^X<&U;7^DvVc>pT29Y* zWLfvoJ7F}6eQ=m`qt)nCaT-%}Q(R&)b!Xnua4>K(-n810Ytr@kznUUT%9 zU5)(td%?jU$qQGtFznyyQokQyEn?d(FXl0f?z;G?BRG<>ov5);0TcnaGARR|G=D!R zXvZbe0Pr9d_}^zfg!IMx|J62UT zROaYfmkgpQ_LbXTJzCb@4-+oOs436dX8_He!4+FOL~L#Xd3Q@@ZK1C%`;i8Vcol}S zp;L10B83uZ1Sp_tWpW&H(&_@;tm6@>@!mb3)}CpVzyoq9+Lu&AE=d61spLx`ZH)Ya z9fDZ!^{~`~t z#{puk6+P;A7DD|OnDQ+i*V!WFp3_WdMlBvpR@rY1YvlH)2;PF@B!iz3bIl|3=^1bM92*9Rxy?Mw?seWU`US_ec~zH0G4AZ)KAtEk(B)H z_U+}2|HGr&_UkYut~XSi`3mx%L~UZnY-?pz1BjF-cd@B}UlOg#4c z?`PfA>am^x_h~t9iJkEBoMEBa{|0m_R6?T23;4dRt5;Yqh+;6q+?4t3Oa_BYO}9;> zmRD((EDA-a8;MufgIc=I%)`O=%8cqwE6hV~){{dnZI~1TaRv+{MNxiiGq|Y{-ZV6$ zX2AJQJx!~21mVjIX9a+m>H7p@RaMp7`y_?WaxOFVKmgIzja?70Z7=8M<|ZfC zRq?!2#B+Vo)>{8&nON+iy_TbasEO4ZRsk5&&3d!fe>KWeP}sE`7NOrz`27p3y|p-* zI9?Kp|775Q{-g6{_#}44B6scSq8R+7n=3?n_Ww+BQsEs;^hzqjA1^AEuQu04_&<|z!$eT05+6RZ{V=~#?R>I@|jeKE> zd`)-Ar2S{J&y9xz14BN)DATOG+`t+!b@X7 Date: Thu, 16 May 2019 11:13:55 +0800 Subject: [PATCH 2/8] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 83a9be9aea8..70e5f61fa93 100644 --- a/README.md +++ b/README.md @@ -115,12 +115,14 @@ Java客户端不依赖任何框架,能够运行于所有Java运行时环境, # Support - + + + From d7d3fd908dfd11113fd891b581c1ebf43c60eb1a Mon Sep 17 00:00:00 2001 From: kl Date: Fri, 11 Dec 2020 17:03:33 +0800 Subject: [PATCH 3/8] Enhance the user experience in the scenario of submitting duplicate keys --- .../txtresolver/PropertyResolver.java | 19 ++++++++++--------- .../directive/namespace-panel-directive.js | 1 - 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java index 89cdc9705da..bdea8b73666 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java @@ -8,6 +8,7 @@ import com.google.common.base.Strings; import org.springframework.stereotype.Component; +import javax.validation.constraints.NotNull; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -35,9 +36,9 @@ public ItemChangeSets resolve(long namespaceId, String configText, List oldKeyMapItem.remove(""); String[] newItems = configText.split(ITEM_SEPARATOR); - - if (isHasRepeatKey(newItems)) { - throw new BadRequestException("config text has repeat key please check."); + Set repeatKeys = new HashSet<>(); + if (isHasRepeatKey(newItems,repeatKeys)) { + throw new BadRequestException(String.format("config text has repeat key please check.repeat keys:%s", repeatKeys.toString())); } ItemChangeSets changeSets = new ItemChangeSets(); @@ -72,24 +73,24 @@ public ItemChangeSets resolve(long namespaceId, String configText, List return changeSets; } - private boolean isHasRepeatKey(String[] newItems) { + private boolean isHasRepeatKey(String[] newItems,@NotNull Set repeatKeys) { Set keys = new HashSet<>(); int lineCounter = 1; - int keyCount = 0; for (String item : newItems) { if (!isCommentItem(item) && !isBlankItem(item)) { - keyCount++; String[] kv = parseKeyValueFromItem(item); if (kv != null) { - keys.add(kv[0].toLowerCase()); + String key = kv[0].toLowerCase(); + if(!keys.add(key)){ + repeatKeys.add(key); + } } else { throw new BadRequestException("line:" + lineCounter + " key value must separate by '='"); } } lineCounter++; } - - return keyCount > keys.size(); + return !repeatKeys.isEmpty(); } private String[] parseKeyValueFromItem(String item) { diff --git a/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js b/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js index 66b5e46d0e3..7b4f88ae0cc 100644 --- a/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js +++ b/apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js @@ -745,7 +745,6 @@ function directive($window, $translate, toastr, AppUtil, EventManager, Permissio } ); namespace.commited = true; - toggleTextEditStatus(namespace); } function syntaxCheck(namespace) { From 5def448b7632b2992c7dda29c38750ff1368d0f9 Mon Sep 17 00:00:00 2001 From: chenkailing <632104866@qq.com> Date: Sat, 12 Dec 2020 14:16:43 +0800 Subject: [PATCH 4/8] Modify the key-value conflict exception prompt, adjust the code style --- .../portal/component/txtresolver/PropertyResolver.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java index bdea8b73666..10a614b69d1 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/component/txtresolver/PropertyResolver.java @@ -37,8 +37,8 @@ public ItemChangeSets resolve(long namespaceId, String configText, List String[] newItems = configText.split(ITEM_SEPARATOR); Set repeatKeys = new HashSet<>(); - if (isHasRepeatKey(newItems,repeatKeys)) { - throw new BadRequestException(String.format("config text has repeat key please check.repeat keys:%s", repeatKeys.toString())); + if (isHasRepeatKey(newItems, repeatKeys)) { + throw new BadRequestException(String.format("Config text has repeated keys: %s, please check your input.", repeatKeys.toString())); } ItemChangeSets changeSets = new ItemChangeSets(); @@ -73,7 +73,7 @@ public ItemChangeSets resolve(long namespaceId, String configText, List return changeSets; } - private boolean isHasRepeatKey(String[] newItems,@NotNull Set repeatKeys) { + private boolean isHasRepeatKey(String[] newItems, @NotNull Set repeatKeys) { Set keys = new HashSet<>(); int lineCounter = 1; for (String item : newItems) { From 9d6f7891ec4865376d29e3b3d94bb5c07cfd95e0 Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 20:26:03 +0800 Subject: [PATCH 5/8] refactor(apollo-common): Refactor NotFoundException --- .../controller/AppController.java | 6 ++-- .../controller/ClusterController.java | 6 ++-- .../controller/InstanceConfigController.java | 6 ++-- .../controller/NamespaceController.java | 9 +++-- .../controller/ReleaseController.java | 16 ++++----- .../apollo/biz/service/ItemService.java | 5 ++- .../apollo/biz/service/ItemSetService.java | 3 +- .../apollo/biz/service/ReleaseService.java | 11 ++++-- .../exception/AppNotFountException.java | 12 +++++++ .../exception/ClusterNotFoundException.java | 12 +++++++ .../exception/NamespaceNotFoundException.java | 16 +++++++++ .../exception/ReleaseNotFoundException.java | 12 +++++++ .../exception/NotFoundExceptionTest.java | 34 +++++++++++++++++-- .../portal/controller/ReleaseController.java | 6 ++-- 14 files changed, 118 insertions(+), 36 deletions(-) create mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java create mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java create mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java create mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java index 541be0e364d..2071cb304dd 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java @@ -20,8 +20,8 @@ import com.ctrip.framework.apollo.biz.service.AppService; import com.ctrip.framework.apollo.common.dto.AppDTO; import com.ctrip.framework.apollo.common.entity.App; +import com.ctrip.framework.apollo.common.exception.AppNotFountException; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.utils.StringUtils; import org.springframework.data.domain.Pageable; @@ -66,7 +66,7 @@ public AppDTO create(@Valid @RequestBody AppDTO dto) { public void delete(@PathVariable("appId") String appId, @RequestParam String operator) { App entity = appService.findOne(appId); if (entity == null) { - throw new NotFoundException("app not found for appId " + appId); + throw new AppNotFountException(appId); } adminService.deleteApp(entity, operator); } @@ -96,7 +96,7 @@ public List find(@RequestParam(value = "name", required = false) String public AppDTO get(@PathVariable("appId") String appId) { App app = appService.findOne(appId); if (app == null) { - throw new NotFoundException("app not found for appId " + appId); + throw new AppNotFountException(appId); } return BeanUtils.transform(AppDTO.class, app); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java index ea931819073..62374041afb 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java @@ -20,7 +20,7 @@ import com.ctrip.framework.apollo.biz.service.ClusterService; import com.ctrip.framework.apollo.common.dto.ClusterDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.ClusterNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.ConfigConsts; import org.springframework.web.bind.annotation.DeleteMapping; @@ -69,7 +69,7 @@ public void delete(@PathVariable("appId") String appId, Cluster entity = clusterService.findOne(appId, clusterName); if (entity == null) { - throw new NotFoundException("cluster not found for clusterName " + clusterName); + throw new ClusterNotFoundException(appId, clusterName); } if(ConfigConsts.CLUSTER_NAME_DEFAULT.equals(entity.getName())){ @@ -90,7 +90,7 @@ public ClusterDTO get(@PathVariable("appId") String appId, @PathVariable("clusterName") String clusterName) { Cluster cluster = clusterService.findOne(appId, clusterName); if (cluster == null) { - throw new NotFoundException("cluster not found for name " + clusterName); + throw new ClusterNotFoundException(appId, clusterName); } return BeanUtils.transform(ClusterDTO.class, cluster); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java index d047f37cced..779ea87461f 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java @@ -25,7 +25,7 @@ import com.ctrip.framework.apollo.common.dto.InstanceDTO; import com.ctrip.framework.apollo.common.dto.PageDTO; import com.ctrip.framework.apollo.common.dto.ReleaseDTO; -import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.google.common.base.Splitter; import com.google.common.base.Strings; @@ -70,7 +70,7 @@ public PageDTO getByRelease(@RequestParam("releaseId") long release Pageable pageable) { Release release = releaseService.findOne(releaseId); if (release == null) { - throw new NotFoundException("release not found for %s", releaseId); + throw new ReleaseNotFoundException(releaseId); } Page instanceConfigsPage = instanceService.findActiveInstanceConfigsByReleaseKey (release.getReleaseKey(), pageable); @@ -123,7 +123,7 @@ public List getByReleasesNotIn(@RequestParam("appId") String appId, List releases = releaseService.findByReleaseIds(releaseIdSet); if (CollectionUtils.isEmpty(releases)) { - throw new NotFoundException("releases not found for %s", releaseIds); + throw new ReleaseNotFoundException(releaseIds); } Set releaseKeys = releases.stream().map(Release::getReleaseKey).collect(Collectors diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java index ccfa066703b..8c618703f18 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java @@ -22,6 +22,7 @@ import com.ctrip.framework.apollo.common.dto.PageDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import org.springframework.data.domain.Page; @@ -68,8 +69,7 @@ public void delete(@PathVariable("appId") String appId, @PathVariable("namespaceName") String namespaceName, @RequestParam String operator) { Namespace entity = namespaceService.findOne(appId, clusterName, namespaceName); if (entity == null) { - throw new NotFoundException("namespace not found for %s %s %s", appId, clusterName, - namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } namespaceService.deleteNamespace(entity, operator); @@ -86,7 +86,7 @@ public List find(@PathVariable("appId") String appId, public NamespaceDTO get(@PathVariable("namespaceId") Long namespaceId) { Namespace namespace = namespaceService.findOne(namespaceId); if (namespace == null) { - throw new NotFoundException("namespace not found for %s", namespaceId); + throw new NamespaceNotFoundException(namespaceId); } return BeanUtils.transform(NamespaceDTO.class, namespace); } @@ -109,8 +109,7 @@ public NamespaceDTO get(@PathVariable("appId") String appId, @PathVariable("namespaceName") String namespaceName) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NotFoundException("namespace not found for %s %s %s", appId, clusterName, - namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } return BeanUtils.transform(NamespaceDTO.class, namespace); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java index a71c2d9e734..5ba873d5255 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java @@ -28,7 +28,8 @@ import com.ctrip.framework.apollo.common.constants.NamespaceBranchStatus; import com.ctrip.framework.apollo.common.dto.ItemChangeSets; import com.ctrip.framework.apollo.common.dto.ReleaseDTO; -import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; +import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.google.common.base.Splitter; import org.springframework.data.domain.Pageable; @@ -72,7 +73,7 @@ public ReleaseController( public ReleaseDTO get(@PathVariable("releaseId") long releaseId) { Release release = releaseService.findOne(releaseId); if (release == null) { - throw new NotFoundException("release not found for %s", releaseId); + throw new ReleaseNotFoundException(releaseId); } return BeanUtils.transform(ReleaseDTO.class, release); } @@ -125,8 +126,7 @@ public ReleaseDTO publish(@PathVariable("appId") String appId, @RequestParam(name = "isEmergencyPublish", defaultValue = "false") boolean isEmergencyPublish) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NotFoundException("Could not find namespace for %s %s %s", appId, clusterName, - namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } Release release = releaseService.publish(namespace, releaseName, releaseComment, operator, isEmergencyPublish); @@ -162,8 +162,7 @@ public ReleaseDTO updateAndPublish(@PathVariable("appId") String appId, @RequestBody ItemChangeSets changeSets) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NotFoundException("Could not find namespace for %s %s %s", appId, clusterName, - namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } Release release = releaseService.mergeBranchChangeSetsAndRelease(namespace, branchName, releaseName, @@ -214,11 +213,10 @@ public ReleaseDTO publish(@PathVariable("appId") String appId, @RequestParam(name = "grayDelKeys") Set grayDelKeys){ Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NotFoundException("Could not find namespace for %s %s %s", appId, clusterName, - namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } - Release release = releaseService.grayDeletionPublish(namespace, releaseName, releaseComment, + Release release = releaseService.grayDeletionPublish(namespace, releaseName, releaseComment, operator, isEmergencyPublish, grayDelKeys); //send release message diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java index ea436bc455b..5cfd2c953b5 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java @@ -23,7 +23,7 @@ import com.ctrip.framework.apollo.biz.entity.Namespace; import com.ctrip.framework.apollo.biz.repository.ItemRepository; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.utils.StringUtils; @@ -256,8 +256,7 @@ private Namespace findNamespaceByAppIdAndClusterNameAndNamespaceName(String appI String namespaceName) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NotFoundException("namespace not found for appId:%s clusterName:%s namespaceName:%s", - appId, clusterName, namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } return namespace; } diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java index 6040ee4cc34..082beecb869 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java @@ -25,6 +25,7 @@ import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import java.util.List; import org.springframework.stereotype.Service; @@ -62,7 +63,7 @@ public ItemChangeSets updateSet(String appId, String clusterName, Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NotFoundException("Namespace %s not found", namespaceName); + throw new NamespaceNotFoundException(appId, clusterName, namespaceName); } String operator = changeSet.getDataChangeLastModifiedBy(); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java index 29085df58be..13db9725650 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java @@ -31,6 +31,7 @@ import com.ctrip.framework.apollo.common.dto.ItemChangeSets; import com.ctrip.framework.apollo.common.exception.BadRequestException; import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; import com.ctrip.framework.apollo.common.utils.GrayReleaseRuleItemTransformer; import com.ctrip.framework.apollo.core.utils.StringUtils; import com.google.common.base.Strings; @@ -460,7 +461,7 @@ private Release createRelease(Namespace namespace, String name, String comment, public Release rollback(long releaseId, String operator) { Release release = findOne(releaseId); if (release == null) { - throw new NotFoundException("release not found"); + throw new ReleaseNotFoundException(releaseId); } if (release.isAbandoned()) { throw new BadRequestException("release is not active"); @@ -503,8 +504,12 @@ public Release rollbackTo(long releaseId, long toReleaseId, String operator) { Release release = findOne(releaseId); Release toRelease = findOne(toReleaseId); - if (release == null || toRelease == null) { - throw new NotFoundException("release not found"); + + if (release == null) { + throw new ReleaseNotFoundException(releaseId); + } + if (toRelease == null) { + throw new ReleaseNotFoundException(toReleaseId); } if (release.isAbandoned() || toRelease.isAbandoned()) { throw new BadRequestException("release is not active"); diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java new file mode 100644 index 00000000000..bcb3eefed23 --- /dev/null +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java @@ -0,0 +1,12 @@ +package com.ctrip.framework.apollo.common.exception; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/21 + */ +public class AppNotFountException extends NotFoundException{ + + public AppNotFountException(String appId) { + super("app not found for appId:%s", appId); + } +} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java new file mode 100644 index 00000000000..bb4680bad97 --- /dev/null +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java @@ -0,0 +1,12 @@ +package com.ctrip.framework.apollo.common.exception; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/21 + */ +public class ClusterNotFoundException extends NotFoundException{ + + public ClusterNotFoundException(String appId, String clusterName) { + super("cluster not found for appId:%s clusterName:%s", appId, clusterName); + } +} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java new file mode 100644 index 00000000000..bd1a018954b --- /dev/null +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java @@ -0,0 +1,16 @@ +package com.ctrip.framework.apollo.common.exception; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/21 + */ +public class NamespaceNotFoundException extends NotFoundException{ + + public NamespaceNotFoundException(String appId, String clusterName, String namespaceName) { + super("namespace not found for appId:%s clusterName:%s namespaceName:%s", appId, clusterName, namespaceName); + } + + public NamespaceNotFoundException(long namespaceId) { + super("namespace not found for namespaceId:%s", namespaceId); + } +} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java new file mode 100644 index 00000000000..fcc0827d19c --- /dev/null +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java @@ -0,0 +1,12 @@ +package com.ctrip.framework.apollo.common.exception; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/21 + */ +public class ReleaseNotFoundException extends NotFoundException{ + + public ReleaseNotFoundException(Object releaseId) { + super("release not found for releaseId:%s", releaseId); + } +} diff --git a/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java b/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java index 7d72fe0c414..408b1e7113a 100644 --- a/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java +++ b/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java @@ -21,11 +21,12 @@ public class NotFoundExceptionTest { + private static final String appId = "app-1001"; + private static final String clusterName = "test"; + private static final String namespaceName = "application"; + @Test public void testConstructor() { - String appId = "app-1001"; - String clusterName = "test"; - String namespaceName = "application"; String key = "test.key"; NotFoundException e1, e2; e1 = new NotFoundException("item not found for %s %s %s %s", appId, @@ -35,4 +36,31 @@ public void testConstructor() { Assert.assertEquals(e1.getMessage(), e2.getMessage()); } + @Test + public void testAppNotFountException() { + AppNotFountException exception = new AppNotFountException(appId); + Assert.assertEquals(exception.getMessage(), "app not found for appId:app-1001"); + } + + @Test + public void testClusterNotFountException() { + ClusterNotFoundException exception = new ClusterNotFoundException(appId, clusterName); + Assert.assertEquals(exception.getMessage(), "cluster not found for appId:app-1001 clusterName:test"); + } + + @Test + public void testNamespaceNotFountException() { + NamespaceNotFoundException exception = new NamespaceNotFoundException(appId, clusterName, namespaceName); + Assert.assertEquals(exception.getMessage(), "namespace not found for appId:app-1001 clusterName:test namespaceName:application"); + + exception = new NamespaceNotFoundException(66); + Assert.assertEquals(exception.getMessage(), "namespace not found for namespaceId:66"); + } + + @Test + public void testReleaseNotFountException() { + ReleaseNotFoundException exception = new ReleaseNotFoundException(66); + Assert.assertEquals(exception.getMessage(), "release not found for releaseId:66"); + } + } \ No newline at end of file diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java index a62f1a5a1b3..5105d351df8 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java @@ -18,7 +18,7 @@ import com.ctrip.framework.apollo.common.dto.ReleaseDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.NotFoundException; +import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; import com.ctrip.framework.apollo.portal.environment.Env; import com.ctrip.framework.apollo.portal.component.PermissionValidator; import com.ctrip.framework.apollo.portal.component.config.PortalConfig; @@ -134,7 +134,7 @@ public ReleaseDTO get(@PathVariable String env, ReleaseDTO release = releaseService.findReleaseById(Env.valueOf(env), releaseId); if (release == null) { - throw new NotFoundException("release not found"); + throw new ReleaseNotFoundException(releaseId); } return release; } @@ -184,7 +184,7 @@ public void rollback(@PathVariable String env, ReleaseDTO release = releaseService.findReleaseById(Env.valueOf(env), releaseId); if (release == null) { - throw new NotFoundException("release not found"); + throw new ReleaseNotFoundException(releaseId); } if (!permissionValidator.hasReleaseNamespacePermission(release.getAppId(), release.getNamespaceName(), env)) { From 80c87e67f61308c4f2ba326ce8092916f03e7e3a Mon Sep 17 00:00:00 2001 From: kl Date: Tue, 21 Mar 2023 20:30:32 +0800 Subject: [PATCH 6/8] refactor(apollo-common): Add license --- .../common/exception/AppNotFountException.java | 16 ++++++++++++++++ .../exception/ClusterNotFoundException.java | 16 ++++++++++++++++ .../exception/NamespaceNotFoundException.java | 16 ++++++++++++++++ .../exception/ReleaseNotFoundException.java | 16 ++++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java index bcb3eefed23..3c048e2dbc3 100644 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ package com.ctrip.framework.apollo.common.exception; /** diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java index bb4680bad97..12fbb9be1a9 100644 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ package com.ctrip.framework.apollo.common.exception; /** diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java index bd1a018954b..e877bec4d90 100644 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ package com.ctrip.framework.apollo.common.exception; /** diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java index fcc0827d19c..63763bd66ef 100644 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java @@ -1,3 +1,19 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ package com.ctrip.framework.apollo.common.exception; /** From ba758f414002952662ef0d8c8c3e042f19d9e92e Mon Sep 17 00:00:00 2001 From: kl Date: Wed, 22 Mar 2023 15:22:05 +0800 Subject: [PATCH 7/8] refactor(apollo-common): Refactor BadRequestException --- .../aop/NamespaceAcquireLockAspect.java | 4 +- .../aop/NamespaceUnlockAspect.java | 2 +- .../controller/AppController.java | 2 +- .../controller/AppNamespaceController.java | 4 +- .../controller/ClusterController.java | 2 +- .../controller/ItemController.java | 14 +- .../controller/NamespaceBranchController.java | 4 +- .../controller/NamespaceController.java | 2 +- .../controller/NamespaceLockController.java | 2 +- .../apollo/biz/service/AccessKeyService.java | 4 +- .../apollo/biz/service/AppService.java | 2 +- .../apollo/biz/service/ClusterService.java | 4 +- .../apollo/biz/service/ItemSetService.java | 9 +- .../biz/service/NamespaceBranchService.java | 4 +- .../apollo/biz/service/NamespaceService.java | 4 +- .../common/exception/BadRequestException.java | 88 +++++++++- .../exception/ItemNotFoundException.java | 40 +++++ .../exception/BadRequestExceptionTest.java | 156 ++++++++++++++++++ .../controller/NotificationControllerV2.java | 10 +- .../openapi/service/ConsumerService.java | 2 +- .../v1/controller/ClusterController.java | 5 +- .../openapi/v1/controller/ItemController.java | 9 +- .../controller/NamespaceBranchController.java | 6 +- .../v1/controller/NamespaceController.java | 7 +- .../v1/controller/ReleaseController.java | 10 +- .../portal/controller/ConsumerController.java | 2 +- .../portal/controller/ItemController.java | 2 +- .../controller/NamespaceController.java | 7 +- .../controller/PermissionController.java | 26 +-- .../portal/service/AppNamespaceService.java | 7 +- .../apollo/portal/service/AppService.java | 6 +- .../apollo/portal/service/ClusterService.java | 2 +- .../portal/service/FavoriteService.java | 2 +- .../apollo/portal/service/ItemService.java | 21 +-- .../service/NamespaceBranchService.java | 2 +- .../portal/service/NamespaceService.java | 6 +- .../SpringSecurityUserService.java | 4 +- .../ConsumerServiceIntegrationTest.java | 3 - .../portal/controller/ItemControllerTest.java | 2 - .../portal/service/ConfigServiceTest.java | 1 - 40 files changed, 378 insertions(+), 111 deletions(-) create mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java create mode 100644 apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/BadRequestExceptionTest.java diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java index 629b1ce0118..fa6c68a7027 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceAcquireLockAspect.java @@ -88,7 +88,7 @@ public void requireLockAdvice(String appId, String clusterName, String namespace public void requireLockAdvice(long itemId, String operator) { Item item = itemService.findOne(itemId); if (item == null){ - throw new BadRequestException("item not exist."); + throw BadRequestException.itemNotExists(itemId); } acquireLock(item.getNamespaceId(), operator); } @@ -117,7 +117,7 @@ void acquireLock(long namespaceId, String currentUser) { private void acquireLock(Namespace namespace, String currentUser) { if (namespace == null) { - throw new BadRequestException("namespace not exist."); + throw BadRequestException.namespaceNotExists(); } long namespaceId = namespace.getId(); diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java index df2ab519c43..2695bbc402b 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/aop/NamespaceUnlockAspect.java @@ -101,7 +101,7 @@ public void requireLockAdvice(String appId, String clusterName, String namespace public void requireLockAdvice(long itemId, String operator) { Item item = itemService.findOne(itemId); if (item == null) { - throw new BadRequestException("item not exist."); + throw BadRequestException.itemNotExists(itemId); } tryUnlock(namespaceService.findOne(item.getNamespaceId())); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java index 2071cb304dd..69613fba654 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java @@ -54,7 +54,7 @@ public AppDTO create(@Valid @RequestBody AppDTO dto) { App entity = BeanUtils.transform(App.class, dto); App managedEntity = appService.findOne(entity.getAppId()); if (managedEntity != null) { - throw new BadRequestException("app already exist."); + throw BadRequestException.appAlreadyExists(entity.getAppId()); } entity = adminService.createNewApp(entity); diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java index 1117bcda5b8..15c1eeecea2 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppNamespaceController.java @@ -69,7 +69,7 @@ public AppNamespaceDTO create(@RequestBody AppNamespaceDTO appNamespace, entity = managedEntity; } else { - throw new BadRequestException("app namespaces already exist."); + throw BadRequestException.appNamespaceAlreadyExists(entity.getAppId(), entity.getName()); } return BeanUtils.transform(AppNamespaceDTO.class, entity); @@ -80,7 +80,7 @@ public void delete(@PathVariable("appId") String appId, @PathVariable("namespace @RequestParam String operator) { AppNamespace entity = appNamespaceService.findOne(appId, namespaceName); if (entity == null) { - throw new BadRequestException("app namespace not found for appId: " + appId + " namespace: " + namespaceName); + throw BadRequestException.appNamespaceNotExists(appId, namespaceName); } appNamespaceService.deleteAppNamespace(entity, operator); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java index 62374041afb..559da84009a 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java @@ -50,7 +50,7 @@ public ClusterDTO create(@PathVariable("appId") String appId, Cluster entity = BeanUtils.transform(Cluster.class, dto); Cluster managedEntity = clusterService.findOne(appId, entity.getName()); if (managedEntity != null) { - throw new BadRequestException("cluster already exist."); + throw BadRequestException.clusterAlreadyExists(entity.getName()); } if (autoCreatePrivateNamespace) { diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java index a2b07c4048d..561a7d5ba73 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java @@ -29,6 +29,7 @@ import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.dto.PageDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; +import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.utils.StringUtils; @@ -75,7 +76,7 @@ public ItemDTO create(@PathVariable("appId") String appId, Item managedEntity = itemService.findOne(appId, clusterName, namespaceName, entity.getKey()); if (managedEntity != null) { - throw new BadRequestException("item already exists"); + throw BadRequestException.itemAlreadyExists(entity.getKey()); } entity = itemService.save(entity); dto = BeanUtils.transform(ItemDTO.class, entity); @@ -128,13 +129,13 @@ public ItemDTO update(@PathVariable("appId") String appId, @RequestBody ItemDTO itemDTO) { Item managedEntity = itemService.findOne(itemId); if (managedEntity == null) { - throw new NotFoundException("item not found for itemId " + itemId); + throw new ItemNotFoundException(appId, clusterName, namespaceName, itemId); } Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); // In case someone constructs an attack scenario if (namespace == null || namespace.getId() != managedEntity.getNamespaceId()) { - throw new BadRequestException("Invalid request, item and namespace do not match!"); + throw BadRequestException.namespaceNotMatch(); } Item entity = BeanUtils.transform(Item.class, itemDTO); @@ -172,7 +173,7 @@ public ItemDTO update(@PathVariable("appId") String appId, public void delete(@PathVariable("itemId") long itemId, @RequestParam String operator) { Item entity = itemService.findOne(itemId); if (entity == null) { - throw new NotFoundException("item not found for itemId " + itemId); + throw new ItemNotFoundException(itemId); } itemService.delete(entity.getId(), operator); @@ -222,7 +223,7 @@ public List findDeletedItems(@PathVariable("appId") String appId, public ItemDTO get(@PathVariable("itemId") long itemId) { Item item = itemService.findOne(itemId); if (item == null) { - throw new NotFoundException("item not found for itemId " + itemId); + throw new ItemNotFoundException(itemId); } return BeanUtils.transform(ItemDTO.class, item); } @@ -233,8 +234,7 @@ public ItemDTO get(@PathVariable("appId") String appId, @PathVariable("namespaceName") String namespaceName, @PathVariable("key") String key) { Item item = itemService.findOne(appId, clusterName, namespaceName, key); if (item == null) { - throw new NotFoundException("item not found for %s %s %s %s", appId, clusterName, - namespaceName, key); + throw new ItemNotFoundException(appId, clusterName, namespaceName, key); } return BeanUtils.transform(ItemDTO.class, item); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java index 6a1886bc70f..e90881b275b 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceBranchController.java @@ -157,9 +157,7 @@ private void checkBranch(String appId, String clusterName, String namespaceName, private void checkNamespace(String appId, String clusterName, String namespaceName) { Namespace parentNamespace = namespaceService.findOne(appId, clusterName, namespaceName); if (parentNamespace == null) { - throw new BadRequestException( - "Namespace not exist. AppId = %s, ClusterName = %s, NamespaceName = %s", appId, - clusterName, namespaceName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java index 8c618703f18..a7f1a7541f2 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java @@ -55,7 +55,7 @@ public NamespaceDTO create(@PathVariable("appId") String appId, Namespace entity = BeanUtils.transform(Namespace.class, dto); Namespace managedEntity = namespaceService.findOne(appId, clusterName, entity.getNamespaceName()); if (managedEntity != null) { - throw new BadRequestException("namespace already exist."); + throw BadRequestException.namespaceAlreadyExists(entity.getNamespaceName()); } entity = namespaceService.save(entity); diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java index 2b5fd666db0..a5e5709fe84 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceLockController.java @@ -49,7 +49,7 @@ public NamespaceLockDTO getNamespaceLockOwner(@PathVariable String appId, @PathV @PathVariable String namespaceName) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException("namespace not exist."); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } if (bizConfig.isNamespaceLockSwitchOff()) { diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AccessKeyService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AccessKeyService.java index 56de82c6670..2306e0de3b0 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AccessKeyService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AccessKeyService.java @@ -71,7 +71,7 @@ public AccessKey update(String appId, AccessKey entity) { AccessKey accessKey = accessKeyRepository.findOneByAppIdAndId(appId, id); if (accessKey == null) { - throw new BadRequestException("AccessKey not exist"); + throw BadRequestException.accessKeyNotExists(); } accessKey.setEnabled(entity.isEnabled()); @@ -86,7 +86,7 @@ public AccessKey update(String appId, AccessKey entity) { public void delete(String appId, long id, String operator) { AccessKey accessKey = accessKeyRepository.findOneByAppIdAndId(appId, id); if (accessKey == null) { - throw new BadRequestException("AccessKey not exist"); + throw BadRequestException.accessKeyNotExists(); } if (accessKey.isEnabled()) { diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppService.java index 774b147e9ef..14fa621cb5b 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/AppService.java @@ -92,7 +92,7 @@ public void update(App app) { App managedApp = appRepository.findByAppId(appId); if (managedApp == null) { - throw new BadRequestException("App not exists. AppId = %s", appId); + throw BadRequestException.appNotExists(appId); } managedApp.setName(app.getName()); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ClusterService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ClusterService.java index 1296776d074..b1744724674 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ClusterService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ClusterService.java @@ -107,7 +107,7 @@ public Cluster saveWithoutInstanceOfAppNamespaces(Cluster entity) { public void delete(long id, String operator) { Cluster cluster = clusterRepository.findById(id).orElse(null); if (cluster == null) { - throw new BadRequestException("cluster not exist"); + throw BadRequestException.clusterNotExists(""); } //delete linked namespaces @@ -151,7 +151,7 @@ public void createDefaultCluster(String appId, String createBy) { public List findChildClusters(String appId, String parentClusterName) { Cluster parentCluster = findOne(appId, parentClusterName); if (parentCluster == null) { - throw new BadRequestException("parent cluster not exist"); + throw BadRequestException.clusterNotExists(parentClusterName); } return clusterRepository.findByParentClusterId(parentCluster.getId()); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java index 082beecb869..58113e365df 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java @@ -24,6 +24,7 @@ import com.ctrip.framework.apollo.common.dto.ItemChangeSets; import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; +import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; @@ -98,7 +99,7 @@ private void doDeleteItems(List toDeleteItems, Namespace namespace, Str for (ItemDTO item : toDeleteItems) { Item deletedItem = itemService.delete(item.getId(), operator); if (deletedItem.getNamespaceId() != namespace.getId()) { - throw new BadRequestException("Invalid request, item and namespace do not match!"); + throw BadRequestException.namespaceNotMatch(); } configChangeContentBuilder.deleteItem(deletedItem); @@ -113,10 +114,10 @@ private void doUpdateItems(List toUpdateItems, Namespace namespace, Str Item managedItem = itemService.findOne(entity.getId()); if (managedItem == null) { - throw new NotFoundException("item not found.(key=%s)", entity.getKey()); + throw new ItemNotFoundException(entity.getKey()); } if (managedItem.getNamespaceId() != namespace.getId()) { - throw new BadRequestException("Invalid request, item and namespace do not match!"); + throw BadRequestException.namespaceNotMatch(); } Item beforeUpdateItem = BeanUtils.transform(Item.class, managedItem); @@ -137,7 +138,7 @@ private void doCreateItems(List toCreateItems, Namespace namespace, Str for (ItemDTO item : toCreateItems) { if (item.getNamespaceId() != namespace.getId()) { - throw new BadRequestException("Invalid request, item and namespace do not match!"); + throw BadRequestException.namespaceNotMatch(); } Item entity = BeanUtils.transform(Item.class, item); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceBranchService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceBranchService.java index e44c13d35e5..03acbb2a5a2 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceBranchService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceBranchService.java @@ -64,12 +64,12 @@ public NamespaceBranchService( public Namespace createBranch(String appId, String parentClusterName, String namespaceName, String operator){ Namespace childNamespace = findBranch(appId, parentClusterName, namespaceName); if (childNamespace != null){ - throw new BadRequestException("namespace already has branch"); + throw BadRequestException.namespaceNotExists(appId, parentClusterName, namespaceName); } Cluster parentCluster = clusterService.findOne(appId, parentClusterName); if (parentCluster == null || parentCluster.getParentClusterId() != 0) { - throw new BadRequestException("cluster not exist or illegal cluster"); + throw BadRequestException.clusterNotExists(parentClusterName); } //create child cluster diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java index be7646edfb3..2c098566ae6 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java @@ -124,7 +124,7 @@ public Page findByItem(String itemKey, Pageable pageable) { public Namespace findPublicNamespaceForAssociatedNamespace(String clusterName, String namespaceName) { AppNamespace appNamespace = appNamespaceService.findPublicNamespaceByName(namespaceName); if (appNamespace == null) { - throw new BadRequestException("namespace not exist"); + throw BadRequestException.namespaceNotExists("", clusterName, namespaceName); } String appId = appNamespace.getAppId(); @@ -392,7 +392,7 @@ public void instanceOfAppNamespaces(String appId, String clusterName, String cre public Map namespacePublishInfo(String appId) { List clusters = clusterService.findParentClusters(appId); if (CollectionUtils.isEmpty(clusters)) { - throw new BadRequestException("app not exist"); + throw BadRequestException.appNotExists(appId); } Map clusterHasNotPublishedItems = Maps.newHashMap(); diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/BadRequestException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/BadRequestException.java index 553a6ba148e..2a3715a72e4 100644 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/BadRequestException.java +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/BadRequestException.java @@ -22,11 +22,97 @@ public class BadRequestException extends AbstractApolloHttpException { /** - * @see AbstractApolloHttpException#AbstractApolloHttpException(String, Object...) + * @see AbstractApolloHttpException#AbstractApolloHttpException(String, Object...) */ public BadRequestException(String msgtpl, Object... args) { super(msgtpl, args); setHttpStatus(HttpStatus.BAD_REQUEST); } + public static BadRequestException itemAlreadyExists(String itemKey) { + return new BadRequestException("item already exists for itemKey:%s", itemKey); + } + + public static BadRequestException itemNotExists(long itemId) { + return new BadRequestException("item not exists for itemId:%s", itemId); + } + + public static BadRequestException namespaceNotExists() { + return new BadRequestException("namespace not exist."); + } + + public static BadRequestException namespaceNotExists(String appId, String clusterName, + String namespaceName) { + return new BadRequestException( + "namespace not exist for appId:%s clusterName:%s namespaceName:%s", appId, clusterName, + namespaceName); + } + + public static BadRequestException namespaceAlreadyExists(String namespaceName) { + return new BadRequestException("namespace already exists for namespaceName:%s", namespaceName); + } + + public static BadRequestException appNamespaceNotExists(String appId, String namespaceName) { + return new BadRequestException("appNamespace not exist for appId:%s namespaceName:%s", appId, namespaceName); + } + + public static BadRequestException appNamespaceAlreadyExists(String appId, String namespaceName) { + return new BadRequestException("appNamespace already exists for appId:%s namespaceName:%s", appId, namespaceName); + } + + public static BadRequestException invalidNamespaceFormat(String format) { + return new BadRequestException("invalid namespace format:%s", format); + } + + public static BadRequestException invalidNotificationsFormat(String format) { + return new BadRequestException("invalid notifications format:%s", format); + } + + public static BadRequestException invalidClusterNameFormat(String format) { + return new BadRequestException("invalid clusterName format:%s", format); + } + + public static BadRequestException invalidRoleTypeFormat(String format) { + return new BadRequestException("invalid roleType format:%s", format); + } + + public static BadRequestException invalidEnvFormat(String format) { + return new BadRequestException("invalid env format:%s", format); + } + + public static BadRequestException namespaceNotMatch() { + return new BadRequestException("invalid request, item and namespace do not match!"); + } + + public static BadRequestException appNotExists(String appId) { + return new BadRequestException("app not exists for appId:%s", appId); + } + + public static BadRequestException appAlreadyExists(String appId) { + return new BadRequestException("app already exists for appId:%s", appId); + } + + public static BadRequestException clusterNotExists(String clusterName) { + return new BadRequestException("cluster not exists for clusterName:%s", clusterName); + } + + public static BadRequestException clusterAlreadyExists(String clusterName) { + return new BadRequestException("cluster already exists for clusterName:%s", clusterName); + } + + public static BadRequestException userNotExists(String userName) { + return new BadRequestException("user not exists for userName:%s", userName); + } + + public static BadRequestException userAlreadyExists(String userName) { + return new BadRequestException("user already exists for userName:%s", userName); + } + + public static BadRequestException userAlreadyAuthorized(String userName) { + return new BadRequestException("%s already authorized", userName); + } + + public static BadRequestException accessKeyNotExists() { + return new BadRequestException("accessKey not exist."); + } } diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java new file mode 100644 index 00000000000..475c7e97c80 --- /dev/null +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java @@ -0,0 +1,40 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.ctrip.framework.apollo.common.exception; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/22 + */ +public class ItemNotFoundException extends NotFoundException{ + + public ItemNotFoundException(String appId, String clusterName, String namespaceName, long itemId) { + super("item not found for appId:%s clusterName:%s namespaceName:%s itemId:%s", appId, clusterName, namespaceName, itemId); + } + + public ItemNotFoundException(String appId, String clusterName, String namespaceName, String itemKey) { + super("item not found for appId:%s clusterName:%s namespaceName:%s itemKey:%s", appId, clusterName, namespaceName, itemKey); + } + + public ItemNotFoundException(long itemId) { + super("item not found for itemId:%s",itemId); + } + + public ItemNotFoundException(String itemKey) { + super("item not found for itemKey:%s",itemKey); + } +} diff --git a/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/BadRequestExceptionTest.java b/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/BadRequestExceptionTest.java new file mode 100644 index 00000000000..b9a48c82758 --- /dev/null +++ b/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/BadRequestExceptionTest.java @@ -0,0 +1,156 @@ +/* + * Copyright 2023 Apollo Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package com.ctrip.framework.apollo.common.exception; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +/** + * @author kl (http://kailing.pub) + * @since 2023/3/22 + */ +public class BadRequestExceptionTest { + + private static final String appId = "app-1001"; + private static final String clusterName = "test"; + private static final String namespaceName = "application"; + + @Test + public void testItemAlreadyExists() { + BadRequestException itemAlreadyExists = BadRequestException.itemAlreadyExists("itemKey"); + assertEquals("item already exists for itemKey:itemKey", itemAlreadyExists.getMessage()); + } + + @Test + public void testItemNotExists() { + BadRequestException itemNotExists = BadRequestException.itemNotExists(1001); + assertEquals("item not exists for itemId:1001", itemNotExists.getMessage()); + } + + @Test + public void testNamespaceNotExists() { + BadRequestException namespaceNotExists = BadRequestException.namespaceNotExists(); + assertEquals("namespace not exist.", namespaceNotExists.getMessage()); + + BadRequestException namespaceNotExists2 = BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); + assertEquals("namespace not exist for appId:app-1001 clusterName:test namespaceName:application", namespaceNotExists2.getMessage()); + } + + @Test + public void testNamespaceAlreadyExists() { + BadRequestException namespaceAlreadyExists = BadRequestException.namespaceAlreadyExists(namespaceName); + assertEquals("namespace already exists for namespaceName:application", namespaceAlreadyExists.getMessage()); + } + + @Test + public void testAppNamespaceNotExists() { + BadRequestException appNamespaceNotExists = BadRequestException.appNamespaceNotExists(appId, namespaceName); + assertEquals("appNamespace not exist for appId:app-1001 namespaceName:application", appNamespaceNotExists.getMessage()); + } + + @Test + public void testAppNamespaceAlreadyExists() { + BadRequestException appNamespaceAlreadyExists = BadRequestException.appNamespaceAlreadyExists(appId, namespaceName); + assertEquals("appNamespace already exists for appId:app-1001 namespaceName:application", appNamespaceAlreadyExists.getMessage()); + } + + @Test + public void testInvalidNamespaceFormat() { + BadRequestException invalidNamespaceFormat = BadRequestException.invalidNamespaceFormat("format"); + assertEquals("invalid namespace format:format", invalidNamespaceFormat.getMessage()); + } + + @Test + public void testInvalidNotificationsFormat() { + BadRequestException invalidNotificationsFormat = BadRequestException.invalidNotificationsFormat("format"); + assertEquals("invalid notifications format:format", invalidNotificationsFormat.getMessage()); + } + + @Test + public void testInvalidClusterNameFormat() { + BadRequestException invalidClusterNameFormat = BadRequestException.invalidClusterNameFormat("format"); + assertEquals("invalid clusterName format:format", invalidClusterNameFormat.getMessage()); + } + + @Test + public void testInvalidRoleTypeFormat() { + BadRequestException invalidRoleTypeFormat = BadRequestException.invalidRoleTypeFormat("format"); + assertEquals("invalid roleType format:format", invalidRoleTypeFormat.getMessage()); + } + + @Test + public void testInvalidEnvFormat() { + BadRequestException invalidEnvFormat = BadRequestException.invalidEnvFormat("format"); + assertEquals("invalid env format:format", invalidEnvFormat.getMessage()); + } + + @Test + public void testNamespaceNotMatch(){ + BadRequestException namespaceNotMatch = BadRequestException.namespaceNotMatch(); + assertEquals("invalid request, item and namespace do not match!", namespaceNotMatch.getMessage()); + } + + @Test + public void testAppNotExists(){ + BadRequestException appNotExists = BadRequestException.appNotExists(appId); + assertEquals("app not exists for appId:app-1001", appNotExists.getMessage()); + } + + @Test + public void testAppAlreadyExists(){ + BadRequestException appAlreadyExists = BadRequestException.appAlreadyExists(appId); + assertEquals("app already exists for appId:app-1001", appAlreadyExists.getMessage()); + } + + @Test + public void testClusterNotExists(){ + BadRequestException clusterNotExists = BadRequestException.clusterNotExists(clusterName); + assertEquals("cluster not exists for clusterName:test", clusterNotExists.getMessage()); + } + + @Test + public void testClusterAlreadyExists(){ + BadRequestException clusterAlreadyExists = BadRequestException.clusterAlreadyExists(clusterName); + assertEquals("cluster already exists for clusterName:test", clusterAlreadyExists.getMessage()); + } + + @Test + public void testUserNotExists(){ + BadRequestException userNotExists = BadRequestException.userNotExists("user"); + assertEquals("user not exists for userName:user", userNotExists.getMessage()); + } + + @Test + public void testUserAlreadyExists(){ + BadRequestException userAlreadyExists = BadRequestException.userAlreadyExists("user"); + assertEquals("user already exists for userName:user", userAlreadyExists.getMessage()); + } + + @Test + public void testUserAlreadyAuthorized(){ + BadRequestException userAlreadyAuthorized = BadRequestException.userAlreadyAuthorized("user"); + assertEquals("user already authorized", userAlreadyAuthorized.getMessage()); + } + + @Test + public void testAccessKeyNotExists(){ + BadRequestException accessKeyNotExists = BadRequestException.accessKeyNotExists(); + assertEquals("accessKey not exist.", accessKeyNotExists.getMessage()); + } + +} diff --git a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java index 95b9a5baadf..e2163b4a703 100644 --- a/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java +++ b/apollo-configservice/src/main/java/com/ctrip/framework/apollo/configservice/controller/NotificationControllerV2.java @@ -122,19 +122,19 @@ public DeferredResult>> pollNotifi } if (CollectionUtils.isEmpty(notifications)) { - throw new BadRequestException("Invalid format of notifications: " + notificationsAsString); + throw BadRequestException.invalidNotificationsFormat(notificationsAsString); } - + Map filteredNotifications = filterNotifications(appId, notifications); if (CollectionUtils.isEmpty(filteredNotifications)) { - throw new BadRequestException("Invalid format of notifications: " + notificationsAsString); + throw BadRequestException.invalidNotificationsFormat(notificationsAsString); } - + DeferredResultWrapper deferredResultWrapper = new DeferredResultWrapper(bizConfig.longPollingTimeoutInMilli()); Set namespaces = Sets.newHashSetWithExpectedSize(filteredNotifications.size()); Map clientSideNotifications = Maps.newHashMapWithExpectedSize(filteredNotifications.size()); - + for (Map.Entry notificationEntry : filteredNotifications.entrySet()) { String normalizedNamespace = notificationEntry.getKey(); ApolloConfigNotification notification = notificationEntry.getValue(); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/service/ConsumerService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/service/ConsumerService.java index 76675ee61f2..922f7430fb3 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/service/ConsumerService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/service/ConsumerService.java @@ -104,7 +104,7 @@ public Consumer createConsumer(Consumer consumer) { String ownerName = consumer.getOwnerName(); UserInfo owner = userService.findByUserId(ownerName); if (owner == null) { - throw new BadRequestException("User does not exist. UserId = %s", ownerName); + throw BadRequestException.userNotExists(ownerName); } consumer.setOwnerEmail(owner.getEmail()); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ClusterController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ClusterController.java index f6c59ae3135..235d8927f2e 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ClusterController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ClusterController.java @@ -71,12 +71,11 @@ public OpenClusterDTO createCluster(@PathVariable String appId, @PathVariable St "name and dataChangeCreatedBy should not be null or empty"); if (!InputValidator.isValidClusterNamespace(clusterName)) { - throw new BadRequestException( - String.format("Invalid ClusterName format: %s", InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE)); + throw BadRequestException.invalidClusterNameFormat(InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE); } if (userService.findByUserId(operator) == null) { - throw new BadRequestException("User " + operator + " doesn't exist!"); + throw BadRequestException.userNotExists(operator); } return this.clusterOpenApiService.createCluster(env, cluster); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java index fd9e74a0ac7..b1186075d77 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java @@ -18,6 +18,7 @@ import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; +import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; import com.ctrip.framework.apollo.common.utils.RequestPrecondition; import com.ctrip.framework.apollo.core.utils.StringUtils; import com.ctrip.framework.apollo.openapi.api.ItemOpenApiService; @@ -88,7 +89,7 @@ public OpenItemDTO createItem(@PathVariable String appId, @PathVariable String e "key and dataChangeCreatedBy should not be null or empty"); if (userService.findByUserId(item.getDataChangeCreatedBy()) == null) { - throw new BadRequestException("User " + item.getDataChangeCreatedBy() + " doesn't exist!"); + throw BadRequestException.userNotExists(item.getDataChangeCreatedBy()); } if (!StringUtils.isEmpty(item.getComment()) && item.getComment().length() > ITEM_COMMENT_MAX_LENGTH) { @@ -114,7 +115,7 @@ public void updateItem(@PathVariable String appId, @PathVariable String env, RequestPrecondition.checkArguments(item.getKey().equals(key), "Key in path and payload is not consistent"); if (userService.findByUserId(item.getDataChangeLastModifiedBy()) == null) { - throw new BadRequestException("user(dataChangeLastModifiedBy) not exists"); + throw BadRequestException.userNotExists(item.getDataChangeLastModifiedBy()); } if (!StringUtils.isEmpty(item.getComment()) && item.getComment().length() > ITEM_COMMENT_MAX_LENGTH) { @@ -147,12 +148,12 @@ public void deleteItem(@PathVariable String appId, @PathVariable String env, HttpServletRequest request) { if (userService.findByUserId(operator) == null) { - throw new BadRequestException("user(operator) not exists"); + throw BadRequestException.userNotExists(operator); } ItemDTO toDeleteItem = itemService.loadItem(Env.valueOf(env), appId, clusterName, namespaceName, key); if (toDeleteItem == null) { - throw new BadRequestException("item not exists"); + throw new ItemNotFoundException(appId, clusterName, namespaceName, key); } this.itemOpenApiService.removeItem(appId, env, clusterName, namespaceName, key, operator); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceBranchController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceBranchController.java index d4adba7fa9a..4a0d940e8d3 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceBranchController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceBranchController.java @@ -88,7 +88,7 @@ public OpenNamespaceDTO createBranch(@PathVariable String appId, RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(operator),"operator can not be empty"); if (userService.findByUserId(operator) == null) { - throw new BadRequestException("operator " + operator + " not exists"); + throw BadRequestException.userNotExists(operator); } NamespaceDTO namespaceDTO = namespaceBranchService.createBranch(appId, Env.valueOf(env.toUpperCase()), clusterName, namespaceName, operator); @@ -110,7 +110,7 @@ public void deleteBranch(@PathVariable String appId, RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(operator),"operator can not be empty"); if (userService.findByUserId(operator) == null) { - throw new BadRequestException("operator " + operator + " not exists"); + throw BadRequestException.userNotExists(operator); } boolean canDelete = consumerPermissionValidator.hasReleaseNamespacePermission(request, appId, namespaceName, env) || @@ -149,7 +149,7 @@ public void updateBranchRules(@PathVariable String appId, @PathVariable String e RequestPrecondition.checkArguments(!StringUtils.isContainEmpty(operator),"operator can not be empty"); if (userService.findByUserId(operator) == null) { - throw new BadRequestException("operator " + operator + " not exists"); + throw BadRequestException.userNotExists(operator); } rules.setAppId(appId); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceController.java index d060856c21c..822db491fbc 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/NamespaceController.java @@ -63,18 +63,17 @@ public OpenAppNamespaceDTO createNamespace(@PathVariable String appId, appNamespaceDTO.getFormat(), appNamespaceDTO.getDataChangeCreatedBy()); if (!InputValidator.isValidAppNamespace(appNamespaceDTO.getName())) { - throw new BadRequestException("Invalid Namespace format: %s", - InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + throw BadRequestException.invalidNamespaceFormat(InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE); } if (!ConfigFileFormat.isValidFormat(appNamespaceDTO.getFormat())) { - throw new BadRequestException("Invalid namespace format. format = %s", appNamespaceDTO.getFormat()); + throw BadRequestException.invalidNamespaceFormat(appNamespaceDTO.getFormat()); } String operator = appNamespaceDTO.getDataChangeCreatedBy(); if (userService.findByUserId(operator) == null) { - throw new BadRequestException("Illegal user. user = %s", operator); + throw BadRequestException.userNotExists(operator); } return this.namespaceOpenApiService.createAppNamespace(appNamespaceDTO); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java index c6c333095e4..1b0067d102b 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ReleaseController.java @@ -80,7 +80,7 @@ public OpenReleaseDTO createRelease(@PathVariable String appId, @PathVariable St "Params(releaseTitle and releasedBy) can not be empty"); if (userService.findByUserId(model.getReleasedBy()) == null) { - throw new BadRequestException("user(releaseBy) not exists"); + throw BadRequestException.userNotExists(model.getReleasedBy()); } return this.releaseOpenApiService.publishNamespace(appId, env, clusterName, namespaceName, model); @@ -104,7 +104,7 @@ public OpenReleaseDTO merge(@PathVariable String appId, @PathVariable String env "Params(releaseTitle and releasedBy) can not be empty"); if (userService.findByUserId(model.getReleasedBy()) == null) { - throw new BadRequestException("user(releaseBy) not exists"); + throw BadRequestException.userNotExists(model.getReleasedBy()); } ReleaseDTO mergedRelease = namespaceBranchService.merge(appId, Env.valueOf(env.toUpperCase()), clusterName, namespaceName, branchName, @@ -126,7 +126,7 @@ public OpenReleaseDTO createGrayRelease(@PathVariable String appId, "Params(releaseTitle and releasedBy) can not be empty"); if (userService.findByUserId(model.getReleasedBy()) == null) { - throw new BadRequestException("user(releaseBy) not exists"); + throw BadRequestException.userNotExists(model.getReleasedBy()); } NamespaceReleaseModel releaseModel = BeanUtils.transform(NamespaceReleaseModel.class, model); @@ -153,7 +153,7 @@ public OpenReleaseDTO createGrayDelRelease(@PathVariable String appId, "Params(grayDelKeys) can not be null"); if (userService.findByUserId(model.getReleasedBy()) == null) { - throw new BadRequestException("user(releaseBy) not exists"); + throw BadRequestException.userNotExists(model.getReleasedBy()); } NamespaceGrayDelReleaseModel releaseModel = BeanUtils.transform(NamespaceGrayDelReleaseModel.class, model); @@ -172,7 +172,7 @@ public void rollback(@PathVariable String env, "Param operator can not be empty"); if (userService.findByUserId(operator) == null) { - throw new BadRequestException("user(operator) not exists"); + throw BadRequestException.userNotExists(operator); } ReleaseDTO release = releaseService.findReleaseById(Env.valueOf(env), releaseId); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ConsumerController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ConsumerController.java index 78a9a46382b..03f6f16089b 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ConsumerController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ConsumerController.java @@ -105,7 +105,7 @@ public List assignNamespaceRoleToConsumer(@PathVariable String tok continue; } if (Env.UNKNOWN.equals(Env.transformEnv(env))) { - throw new BadRequestException("env: %s is illegal", env); + throw BadRequestException.invalidEnvFormat(env); } envList.add(env); } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java index 4891bd7ea89..cea43470be3 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ItemController.java @@ -130,7 +130,7 @@ public void deleteItem(@PathVariable String appId, @PathVariable String env, // In case someone constructs an attack scenario if (namespace == null || item.getNamespaceId() != namespace.getId()) { - throw new BadRequestException("Invalid request, item and namespace do not match!"); + throw BadRequestException.namespaceNotMatch(); } configService.deleteItem(Env.valueOf(env), itemId, userInfoHolder.getUser().getUserId()); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java index 14c1056cd4d..c3bbbcadad8 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/NamespaceController.java @@ -207,8 +207,7 @@ public AppNamespaceDTO findAppNamespace(@PathVariable String appId, @PathVariabl AppNamespace appNamespace = appNamespaceService.findByAppIdAndName(appId, namespaceName); if (appNamespace == null) { - throw new BadRequestException( - String.format("AppNamespace not exists. AppId = %s, NamespaceName = %s", appId, namespaceName)); + throw BadRequestException.appNamespaceNotExists(appId, namespaceName); } return BeanUtils.transform(AppNamespaceDTO.class, appNamespace); @@ -220,8 +219,8 @@ public AppNamespace createAppNamespace(@PathVariable String appId, @RequestParam(defaultValue = "true") boolean appendNamespacePrefix, @Valid @RequestBody AppNamespace appNamespace) { if (!InputValidator.isValidAppNamespace(appNamespace.getName())) { - throw new BadRequestException("Invalid Namespace format: %s", - InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE); + throw BadRequestException.invalidNamespaceFormat(InputValidator.INVALID_CLUSTER_NAMESPACE_MESSAGE + " & " + + InputValidator.INVALID_NAMESPACE_NAMESPACE_MESSAGE); } AppNamespace createdAppNamespace = appNamespaceService.createAppNamespaceInLocal(appNamespace, appendNamespacePrefix); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java index 0887843e420..515fc15c513 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/PermissionController.java @@ -128,7 +128,7 @@ public NamespaceEnvRolesAssignedUsers getNamespaceEnvRoles(@PathVariable String // validate env parameter if (Env.UNKNOWN == Env.transformEnv(env)) { - throw new BadRequestException("env is illegal"); + throw BadRequestException.invalidEnvFormat(env); } NamespaceEnvRolesAssignedUsers assignedUsers = new NamespaceEnvRolesAssignedUsers(); @@ -155,17 +155,17 @@ public ResponseEntity assignNamespaceEnvRoleToUser(@PathVariable String ap RequestPrecondition.checkArgumentsNotEmpty(user); if (!RoleType.isValidRoleType(roleType)) { - throw new BadRequestException("role type is illegal"); + throw BadRequestException.invalidRoleTypeFormat(roleType); } // validate env parameter if (Env.UNKNOWN == Env.transformEnv(env)) { - throw new BadRequestException("env is illegal"); + throw BadRequestException.invalidEnvFormat(env); } Set assignedUser = rolePermissionService.assignRoleToUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType, env), Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); if (CollectionUtils.isEmpty(assignedUser)) { - throw new BadRequestException(user + " already authorized"); + throw BadRequestException.userAlreadyAuthorized(user); } return ResponseEntity.ok().build(); @@ -178,11 +178,11 @@ public ResponseEntity removeNamespaceEnvRoleFromUser(@PathVariable String RequestPrecondition.checkArgumentsNotEmpty(user); if (!RoleType.isValidRoleType(roleType)) { - throw new BadRequestException("role type is illegal"); + throw BadRequestException.invalidRoleTypeFormat(roleType); } // validate env parameter if (Env.UNKNOWN == Env.transformEnv(env)) { - throw new BadRequestException("env is illegal"); + throw BadRequestException.invalidEnvFormat(env); } rolePermissionService.removeRoleFromUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType, env), Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); @@ -215,12 +215,12 @@ public ResponseEntity assignNamespaceRoleToUser(@PathVariable String appId RequestPrecondition.checkArgumentsNotEmpty(user); if (!RoleType.isValidRoleType(roleType)) { - throw new BadRequestException("role type is illegal"); + throw BadRequestException.invalidRoleTypeFormat(roleType); } Set assignedUser = rolePermissionService.assignRoleToUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType), Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); if (CollectionUtils.isEmpty(assignedUser)) { - throw new BadRequestException(user + " already authorized"); + throw BadRequestException.userAlreadyAuthorized(user); } return ResponseEntity.ok().build(); @@ -233,7 +233,7 @@ public ResponseEntity removeNamespaceRoleFromUser(@PathVariable String app RequestPrecondition.checkArgumentsNotEmpty(user); if (!RoleType.isValidRoleType(roleType)) { - throw new BadRequestException("role type is illegal"); + throw BadRequestException.invalidRoleTypeFormat(roleType); } rolePermissionService.removeRoleFromUsers(RoleUtils.buildNamespaceRoleName(appId, namespaceName, roleType), Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); @@ -259,12 +259,12 @@ public ResponseEntity assignAppRoleToUser(@PathVariable String appId, @Pat RequestPrecondition.checkArgumentsNotEmpty(user); if (!RoleType.isValidRoleType(roleType)) { - throw new BadRequestException("role type is illegal"); + throw BadRequestException.invalidRoleTypeFormat(roleType); } Set assignedUsers = rolePermissionService.assignRoleToUsers(RoleUtils.buildAppRoleName(appId, roleType), Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); if (CollectionUtils.isEmpty(assignedUsers)) { - throw new BadRequestException(user + " already authorized"); + throw BadRequestException.userAlreadyAuthorized(user); } return ResponseEntity.ok().build(); @@ -277,7 +277,7 @@ public ResponseEntity removeAppRoleFromUser(@PathVariable String appId, @P RequestPrecondition.checkArgumentsNotEmpty(user); if (!RoleType.isValidRoleType(roleType)) { - throw new BadRequestException("role type is illegal"); + throw BadRequestException.invalidRoleTypeFormat(roleType); } rolePermissionService.removeRoleFromUsers(RoleUtils.buildAppRoleName(appId, roleType), Sets.newHashSet(user), userInfoHolder.getUser().getUserId()); @@ -286,7 +286,7 @@ public ResponseEntity removeAppRoleFromUser(@PathVariable String appId, @P private void checkUserExists(String userId) { if (userService.findByUserId(userId) == null) { - throw new BadRequestException("User %s does not exist!", userId); + throw BadRequestException.userNotExists(userId); } } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppNamespaceService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppNamespaceService.java index e75ea344d4c..3a2b840baa1 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppNamespaceService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppNamespaceService.java @@ -130,7 +130,7 @@ public AppNamespace createAppNamespaceInLocal(AppNamespace appNamespace, boolean //add app org id as prefix App app = appService.load(appId); if (app == null) { - throw new BadRequestException("App not exist. AppId = " + appId); + throw BadRequestException.appNotExists(appId); } StringBuilder appNamespaceName = new StringBuilder(); @@ -146,7 +146,7 @@ public AppNamespace createAppNamespaceInLocal(AppNamespace appNamespace, boolean } if (!ConfigFileFormat.isValidFormat(appNamespace.getFormat())) { - throw new BadRequestException("Invalid namespace format. format must be properties、json、yaml、yml、xml"); + throw BadRequestException.invalidNamespaceFormat("format must be properties、json、yaml、yml、xml"); } String operator = appNamespace.getDataChangeCreatedBy(); @@ -233,8 +233,7 @@ private void checkPublicAppNamespaceGlobalUniqueness(AppNamespace appNamespace) public AppNamespace deleteAppNamespace(String appId, String namespaceName) { AppNamespace appNamespace = appNamespaceRepository.findByAppIdAndName(appId, namespaceName); if (appNamespace == null) { - throw new BadRequestException( - String.format("AppNamespace not exists. AppId = %s, NamespaceName = %s", appId, namespaceName)); + throw BadRequestException.appNamespaceNotExists( appId, namespaceName); } String operator = userInfoHolder.getUser().getUserId(); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppService.java index 0ea470ef998..855537170fa 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/AppService.java @@ -130,7 +130,7 @@ public App createAppInLocal(App app) { App managedApp = appRepository.findByAppId(appId); if (managedApp != null) { - throw new BadRequestException("App already exists. AppId = %s", appId); + throw BadRequestException.appAlreadyExists(appId); } UserInfo owner = userService.findByUserId(app.getOwnerName()); @@ -178,7 +178,7 @@ public App updateAppInLocal(App app) { App managedApp = appRepository.findByAppId(appId); if (managedApp == null) { - throw new BadRequestException("App not exists. AppId = %s", appId); + throw BadRequestException.appNotExists(appId); } managedApp.setName(app.getName()); @@ -209,7 +209,7 @@ public EnvClusterInfo createEnvNavNode(Env env, String appId) { public App deleteAppInLocal(String appId) { App managedApp = appRepository.findByAppId(appId); if (managedApp == null) { - throw new BadRequestException("App not exists. AppId = %s", appId); + throw BadRequestException.appNotExists(appId); } String operator = userInfoHolder.getUser().getUserId(); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ClusterService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ClusterService.java index b556d4fdc92..9790eed86b9 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ClusterService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ClusterService.java @@ -44,7 +44,7 @@ public List findClusters(Env env, String appId) { public ClusterDTO createCluster(Env env, ClusterDTO cluster) { if (!clusterAPI.isClusterUnique(cluster.getAppId(), env, cluster.getName())) { - throw new BadRequestException("cluster %s already exists.", cluster.getName()); + throw BadRequestException.clusterAlreadyExists(cluster.getName()); } ClusterDTO clusterDTO = clusterAPI.create(env, cluster); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/FavoriteService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/FavoriteService.java index 4d00dea21ea..b60c46e079c 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/FavoriteService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/FavoriteService.java @@ -52,7 +52,7 @@ public FavoriteService( public Favorite addFavorite(Favorite favorite) { UserInfo user = userService.findByUserId(favorite.getUserId()); if (user == null) { - throw new BadRequestException("user not exist"); + throw BadRequestException.userNotExists(favorite.getUserId()); } UserInfo loginUser = userInfoHolder.getUser(); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java index 22224f06757..2a70aff2154 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java @@ -20,6 +20,7 @@ import com.ctrip.framework.apollo.common.constants.GsonType; import com.ctrip.framework.apollo.common.dto.*; import com.ctrip.framework.apollo.common.exception.BadRequestException; +import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.enums.ConfigFileFormat; import com.ctrip.framework.apollo.openapi.utils.UrlUtils; @@ -90,14 +91,13 @@ public void updateConfigItemByText(NamespaceTextModel model) { NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException( - "namespace:" + namespaceName + " not exist in env:" + env + ", cluster:" + clusterName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } long namespaceId = namespace.getId(); // In case someone constructs an attack scenario if (model.getNamespaceId() != namespaceId) { - throw new BadRequestException("Invalid request, item and namespace do not match!"); + throw BadRequestException.namespaceNotExists(); } String configText = model.getConfigText(); @@ -132,8 +132,7 @@ public void updateItems(String appId, Env env, String clusterName, String namesp public ItemDTO createItem(String appId, Env env, String clusterName, String namespaceName, ItemDTO item) { NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException( - "namespace:" + namespaceName + " not exist in env:" + env + ", cluster:" + clusterName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } item.setNamespaceId(namespace.getId()); @@ -145,8 +144,7 @@ public ItemDTO createItem(String appId, Env env, String clusterName, String name public ItemDTO createCommentItem(String appId, Env env, String clusterName, String namespaceName, ItemDTO item) { NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException( - "namespace:" + namespaceName + " not exist in env:" + env + ", cluster:" + clusterName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } item.setNamespaceId(namespace.getId()); @@ -179,7 +177,7 @@ public ItemDTO loadItem(Env env, String appId, String clusterName, String namesp public ItemDTO loadItemById(Env env, long itemId) { ItemDTO item = itemAPI.loadItemById(env, itemId); if (item == null) { - throw new BadRequestException("item not found for itemId " + itemId); + throw new ItemNotFoundException(itemId); } return item; } @@ -207,8 +205,7 @@ public void revokeItem(String appId, Env env, String clusterName, String namespa NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException( - "namespace:" + namespaceName + " not exist in env:" + env + ", cluster:" + clusterName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } long namespaceId = namespace.getId(); @@ -285,9 +282,7 @@ private long getNamespaceId(NamespaceIdentifier namespaceIdentifier) { namespaceDTO = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); } catch (HttpClientErrorException e) { if (e.getStatusCode() == HttpStatus.NOT_FOUND) { - throw new BadRequestException( - "namespace not exist. appId:%s, env:%s, clusterName:%s, namespaceName:%s", appId, env, clusterName, - namespaceName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } throw e; } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceBranchService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceBranchService.java index 2f90165e196..30940bcfb33 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceBranchService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceBranchService.java @@ -146,7 +146,7 @@ private ItemChangeSets calculateBranchChangeSet(String appId, Env env, String cl NamespaceBO parentNamespace = namespaceService.loadNamespaceBO(appId, env, clusterName, namespaceName); if (parentNamespace == null) { - throw new BadRequestException("base namespace not existed"); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } if (parentNamespace.getItemModifiedCnt() > 0) { diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java index 3c95907c8e7..735ad2a4609 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/NamespaceService.java @@ -178,7 +178,7 @@ public NamespaceDTO loadNamespaceBaseInfo(String appId, Env env, String clusterN String namespaceName) { NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException("Namespace: %s not exist.", namespaceName); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } return namespace; } @@ -190,7 +190,7 @@ public List findNamespaceBOs(String appId, Env env, String clusterN List namespaces = namespaceAPI.findNamespaceByCluster(appId, env, clusterName); if (namespaces == null || namespaces.size() == 0) { - throw new BadRequestException("namespaces not exist"); + throw BadRequestException.namespaceNotExists(); } List namespaceBOs = Collections.synchronizedList(new LinkedList<>()); @@ -253,7 +253,7 @@ public NamespaceBO loadNamespaceBO(String appId, Env env, String clusterName, String namespaceName, boolean includeDeletedItems) { NamespaceDTO namespace = namespaceAPI.loadNamespace(appId, env, clusterName, namespaceName); if (namespace == null) { - throw new BadRequestException("namespaces not exist"); + throw BadRequestException.namespaceNotExists(appId, clusterName, namespaceName); } return transformNamespace2BO(env, namespace, includeDeletedItems); } diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/springsecurity/SpringSecurityUserService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/springsecurity/SpringSecurityUserService.java index 04c5ea129d5..ab0e183d254 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/springsecurity/SpringSecurityUserService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/spi/springsecurity/SpringSecurityUserService.java @@ -62,7 +62,7 @@ public void create(UserPO user) { String newPassword = passwordEncoder.encode(user.getPassword()); UserPO managedUser = userRepository.findByUsername(username); if (managedUser != null) { - throw new BadRequestException("User %s already exists", username); + throw BadRequestException.userAlreadyExists(username); } //create user.setPassword(newPassword); @@ -82,7 +82,7 @@ public void update(UserPO user) { String newPassword = passwordEncoder.encode(user.getPassword()); UserPO managedUser = userRepository.findByUsername(username); if (managedUser == null) { - throw new BadRequestException("User does not exist, please create a new user."); + throw BadRequestException.userNotExists(username); } managedUser.setPassword(newPassword); managedUser.setEmail(user.getEmail()); diff --git a/apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/service/ConsumerServiceIntegrationTest.java b/apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/service/ConsumerServiceIntegrationTest.java index 7d04fcb9fcd..6c89d01a4fc 100644 --- a/apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/service/ConsumerServiceIntegrationTest.java +++ b/apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/service/ConsumerServiceIntegrationTest.java @@ -23,13 +23,10 @@ import com.ctrip.framework.apollo.openapi.entity.Consumer; import com.ctrip.framework.apollo.portal.AbstractIntegrationTest; import com.google.common.collect.Sets; -import java.util.Collections; import java.util.List; import java.util.Set; import org.assertj.core.api.Assertions; -import org.junit.Assert; import org.junit.Test; -import org.junit.function.ThrowingRunnable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.test.context.jdbc.Sql; diff --git a/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/controller/ItemControllerTest.java b/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/controller/ItemControllerTest.java index 73ea6ec80b4..08f1038c800 100644 --- a/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/controller/ItemControllerTest.java +++ b/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/controller/ItemControllerTest.java @@ -33,8 +33,6 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; -import org.yaml.snakeyaml.constructor.ConstructorException; -import org.yaml.snakeyaml.constructor.DuplicateKeyException; @RunWith(MockitoJUnitRunner.class) public class ItemControllerTest { diff --git a/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/service/ConfigServiceTest.java b/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/service/ConfigServiceTest.java index 2d60e37e413..eb7684671e7 100644 --- a/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/service/ConfigServiceTest.java +++ b/apollo-portal/src/test/java/com/ctrip/framework/apollo/portal/service/ConfigServiceTest.java @@ -33,7 +33,6 @@ import com.ctrip.framework.apollo.portal.entity.vo.NamespaceIdentifier; import java.util.Collections; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; From 88262a6212c4434bf3ddb663c6af9ea8aa502f3f Mon Sep 17 00:00:00 2001 From: kl Date: Thu, 23 Mar 2023 10:52:15 +0800 Subject: [PATCH 8/8] refactor(apollo-common): Refactor NotFoundException --- .../controller/AppController.java | 6 +-- .../controller/ClusterController.java | 6 +-- .../controller/InstanceConfigController.java | 6 +-- .../controller/ItemController.java | 9 ++--- .../controller/NamespaceController.java | 7 ++-- .../controller/ReleaseController.java | 11 +++-- .../apollo/biz/service/ItemService.java | 4 +- .../apollo/biz/service/ItemSetService.java | 6 +-- .../apollo/biz/service/ReleaseService.java | 7 ++-- .../exception/AppNotFountException.java | 28 ------------- .../exception/ClusterNotFoundException.java | 28 ------------- .../exception/ItemNotFoundException.java | 40 ------------------- .../exception/NamespaceNotFoundException.java | 32 --------------- .../common/exception/NotFoundException.java | 37 +++++++++++++++++ .../exception/ReleaseNotFoundException.java | 28 ------------- .../exception/NotFoundExceptionTest.java | 33 ++++++++++----- .../openapi/v1/controller/ItemController.java | 4 +- .../portal/controller/ReleaseController.java | 6 +-- .../apollo/portal/service/ItemService.java | 4 +- 19 files changed, 96 insertions(+), 206 deletions(-) delete mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java delete mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java delete mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java delete mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java delete mode 100644 apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java index 69613fba654..fc2c20e2719 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/AppController.java @@ -20,8 +20,8 @@ import com.ctrip.framework.apollo.biz.service.AppService; import com.ctrip.framework.apollo.common.dto.AppDTO; import com.ctrip.framework.apollo.common.entity.App; -import com.ctrip.framework.apollo.common.exception.AppNotFountException; import com.ctrip.framework.apollo.common.exception.BadRequestException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.utils.StringUtils; import org.springframework.data.domain.Pageable; @@ -66,7 +66,7 @@ public AppDTO create(@Valid @RequestBody AppDTO dto) { public void delete(@PathVariable("appId") String appId, @RequestParam String operator) { App entity = appService.findOne(appId); if (entity == null) { - throw new AppNotFountException(appId); + throw NotFoundException.appNotFound(appId); } adminService.deleteApp(entity, operator); } @@ -96,7 +96,7 @@ public List find(@RequestParam(value = "name", required = false) String public AppDTO get(@PathVariable("appId") String appId) { App app = appService.findOne(appId); if (app == null) { - throw new AppNotFountException(appId); + throw NotFoundException.appNotFound(appId); } return BeanUtils.transform(AppDTO.class, app); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java index 559da84009a..7a58bd18fea 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ClusterController.java @@ -20,7 +20,7 @@ import com.ctrip.framework.apollo.biz.service.ClusterService; import com.ctrip.framework.apollo.common.dto.ClusterDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.ClusterNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.ConfigConsts; import org.springframework.web.bind.annotation.DeleteMapping; @@ -69,7 +69,7 @@ public void delete(@PathVariable("appId") String appId, Cluster entity = clusterService.findOne(appId, clusterName); if (entity == null) { - throw new ClusterNotFoundException(appId, clusterName); + throw NotFoundException.clusterNotFound(appId, clusterName); } if(ConfigConsts.CLUSTER_NAME_DEFAULT.equals(entity.getName())){ @@ -90,7 +90,7 @@ public ClusterDTO get(@PathVariable("appId") String appId, @PathVariable("clusterName") String clusterName) { Cluster cluster = clusterService.findOne(appId, clusterName); if (cluster == null) { - throw new ClusterNotFoundException(appId, clusterName); + throw NotFoundException.clusterNotFound(appId, clusterName); } return BeanUtils.transform(ClusterDTO.class, cluster); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java index 779ea87461f..c087a5035c7 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/InstanceConfigController.java @@ -25,7 +25,7 @@ import com.ctrip.framework.apollo.common.dto.InstanceDTO; import com.ctrip.framework.apollo.common.dto.PageDTO; import com.ctrip.framework.apollo.common.dto.ReleaseDTO; -import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.google.common.base.Splitter; import com.google.common.base.Strings; @@ -70,7 +70,7 @@ public PageDTO getByRelease(@RequestParam("releaseId") long release Pageable pageable) { Release release = releaseService.findOne(releaseId); if (release == null) { - throw new ReleaseNotFoundException(releaseId); + throw NotFoundException.releaseNotFound(releaseId); } Page instanceConfigsPage = instanceService.findActiveInstanceConfigsByReleaseKey (release.getReleaseKey(), pageable); @@ -123,7 +123,7 @@ public List getByReleasesNotIn(@RequestParam("appId") String appId, List releases = releaseService.findByReleaseIds(releaseIdSet); if (CollectionUtils.isEmpty(releases)) { - throw new ReleaseNotFoundException(releaseIds); + throw NotFoundException.releaseNotFound(releaseIds); } Set releaseKeys = releases.stream().map(Release::getReleaseKey).collect(Collectors diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java index 561a7d5ba73..d33b067e8fb 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ItemController.java @@ -29,7 +29,6 @@ import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.dto.PageDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.utils.StringUtils; @@ -129,7 +128,7 @@ public ItemDTO update(@PathVariable("appId") String appId, @RequestBody ItemDTO itemDTO) { Item managedEntity = itemService.findOne(itemId); if (managedEntity == null) { - throw new ItemNotFoundException(appId, clusterName, namespaceName, itemId); + throw NotFoundException.itemNotFound(appId, clusterName, namespaceName, itemId); } Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); @@ -173,7 +172,7 @@ public ItemDTO update(@PathVariable("appId") String appId, public void delete(@PathVariable("itemId") long itemId, @RequestParam String operator) { Item entity = itemService.findOne(itemId); if (entity == null) { - throw new ItemNotFoundException(itemId); + throw NotFoundException.itemNotFound(itemId); } itemService.delete(entity.getId(), operator); @@ -223,7 +222,7 @@ public List findDeletedItems(@PathVariable("appId") String appId, public ItemDTO get(@PathVariable("itemId") long itemId) { Item item = itemService.findOne(itemId); if (item == null) { - throw new ItemNotFoundException(itemId); + throw NotFoundException.itemNotFound(itemId); } return BeanUtils.transform(ItemDTO.class, item); } @@ -234,7 +233,7 @@ public ItemDTO get(@PathVariable("appId") String appId, @PathVariable("namespaceName") String namespaceName, @PathVariable("key") String key) { Item item = itemService.findOne(appId, clusterName, namespaceName, key); if (item == null) { - throw new ItemNotFoundException(appId, clusterName, namespaceName, key); + throw NotFoundException.itemNotFound(appId, clusterName, namespaceName, key); } return BeanUtils.transform(ItemDTO.class, item); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java index a7f1a7541f2..3c7da29b146 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/NamespaceController.java @@ -22,7 +22,6 @@ import com.ctrip.framework.apollo.common.dto.PageDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; import com.ctrip.framework.apollo.common.exception.NotFoundException; -import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import org.springframework.data.domain.Page; @@ -69,7 +68,7 @@ public void delete(@PathVariable("appId") String appId, @PathVariable("namespaceName") String namespaceName, @RequestParam String operator) { Namespace entity = namespaceService.findOne(appId, clusterName, namespaceName); if (entity == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } namespaceService.deleteNamespace(entity, operator); @@ -86,7 +85,7 @@ public List find(@PathVariable("appId") String appId, public NamespaceDTO get(@PathVariable("namespaceId") Long namespaceId) { Namespace namespace = namespaceService.findOne(namespaceId); if (namespace == null) { - throw new NamespaceNotFoundException(namespaceId); + throw NotFoundException.itemNotFound(namespaceId); } return BeanUtils.transform(NamespaceDTO.class, namespace); } @@ -109,7 +108,7 @@ public NamespaceDTO get(@PathVariable("appId") String appId, @PathVariable("namespaceName") String namespaceName) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } return BeanUtils.transform(NamespaceDTO.class, namespace); } diff --git a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java index 5ba873d5255..d408cca15a8 100644 --- a/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java +++ b/apollo-adminservice/src/main/java/com/ctrip/framework/apollo/adminservice/controller/ReleaseController.java @@ -28,8 +28,7 @@ import com.ctrip.framework.apollo.common.constants.NamespaceBranchStatus; import com.ctrip.framework.apollo.common.dto.ItemChangeSets; import com.ctrip.framework.apollo.common.dto.ReleaseDTO; -import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; -import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.google.common.base.Splitter; import org.springframework.data.domain.Pageable; @@ -73,7 +72,7 @@ public ReleaseController( public ReleaseDTO get(@PathVariable("releaseId") long releaseId) { Release release = releaseService.findOne(releaseId); if (release == null) { - throw new ReleaseNotFoundException(releaseId); + throw NotFoundException.releaseNotFound(releaseId); } return BeanUtils.transform(ReleaseDTO.class, release); } @@ -126,7 +125,7 @@ public ReleaseDTO publish(@PathVariable("appId") String appId, @RequestParam(name = "isEmergencyPublish", defaultValue = "false") boolean isEmergencyPublish) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } Release release = releaseService.publish(namespace, releaseName, releaseComment, operator, isEmergencyPublish); @@ -162,7 +161,7 @@ public ReleaseDTO updateAndPublish(@PathVariable("appId") String appId, @RequestBody ItemChangeSets changeSets) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } Release release = releaseService.mergeBranchChangeSetsAndRelease(namespace, branchName, releaseName, @@ -213,7 +212,7 @@ public ReleaseDTO publish(@PathVariable("appId") String appId, @RequestParam(name = "grayDelKeys") Set grayDelKeys){ Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } Release release = releaseService.grayDeletionPublish(namespace, releaseName, releaseComment, diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java index 5cfd2c953b5..a6bba2afc0b 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemService.java @@ -23,7 +23,7 @@ import com.ctrip.framework.apollo.biz.entity.Namespace; import com.ctrip.framework.apollo.biz.repository.ItemRepository; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.utils.StringUtils; @@ -256,7 +256,7 @@ private Namespace findNamespaceByAppIdAndClusterNameAndNamespaceName(String appI String namespaceName) { Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } return namespace; } diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java index 58113e365df..5722e51baeb 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ItemSetService.java @@ -24,9 +24,7 @@ import com.ctrip.framework.apollo.common.dto.ItemChangeSets; import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; import com.ctrip.framework.apollo.common.exception.NotFoundException; -import com.ctrip.framework.apollo.common.exception.NamespaceNotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import java.util.List; import org.springframework.stereotype.Service; @@ -64,7 +62,7 @@ public ItemChangeSets updateSet(String appId, String clusterName, Namespace namespace = namespaceService.findOne(appId, clusterName, namespaceName); if (namespace == null) { - throw new NamespaceNotFoundException(appId, clusterName, namespaceName); + throw NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); } String operator = changeSet.getDataChangeLastModifiedBy(); @@ -114,7 +112,7 @@ private void doUpdateItems(List toUpdateItems, Namespace namespace, Str Item managedItem = itemService.findOne(entity.getId()); if (managedItem == null) { - throw new ItemNotFoundException(entity.getKey()); + throw NotFoundException.itemNotFound(entity.getKey()); } if (managedItem.getNamespaceId() != namespace.getId()) { throw BadRequestException.namespaceNotMatch(); diff --git a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java index 13db9725650..b62afb20f1e 100644 --- a/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java +++ b/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/ReleaseService.java @@ -31,7 +31,6 @@ import com.ctrip.framework.apollo.common.dto.ItemChangeSets; import com.ctrip.framework.apollo.common.exception.BadRequestException; import com.ctrip.framework.apollo.common.exception.NotFoundException; -import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; import com.ctrip.framework.apollo.common.utils.GrayReleaseRuleItemTransformer; import com.ctrip.framework.apollo.core.utils.StringUtils; import com.google.common.base.Strings; @@ -461,7 +460,7 @@ private Release createRelease(Namespace namespace, String name, String comment, public Release rollback(long releaseId, String operator) { Release release = findOne(releaseId); if (release == null) { - throw new ReleaseNotFoundException(releaseId); + throw NotFoundException.releaseNotFound(releaseId); } if (release.isAbandoned()) { throw new BadRequestException("release is not active"); @@ -506,10 +505,10 @@ public Release rollbackTo(long releaseId, long toReleaseId, String operator) { Release toRelease = findOne(toReleaseId); if (release == null) { - throw new ReleaseNotFoundException(releaseId); + throw NotFoundException.releaseNotFound(releaseId); } if (toRelease == null) { - throw new ReleaseNotFoundException(toReleaseId); + throw NotFoundException.releaseNotFound(toReleaseId); } if (release.isAbandoned() || toRelease.isAbandoned()) { throw new BadRequestException("release is not active"); diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java deleted file mode 100644 index 3c048e2dbc3..00000000000 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/AppNotFountException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2023 Apollo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package com.ctrip.framework.apollo.common.exception; - -/** - * @author kl (http://kailing.pub) - * @since 2023/3/21 - */ -public class AppNotFountException extends NotFoundException{ - - public AppNotFountException(String appId) { - super("app not found for appId:%s", appId); - } -} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java deleted file mode 100644 index 12fbb9be1a9..00000000000 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ClusterNotFoundException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2023 Apollo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package com.ctrip.framework.apollo.common.exception; - -/** - * @author kl (http://kailing.pub) - * @since 2023/3/21 - */ -public class ClusterNotFoundException extends NotFoundException{ - - public ClusterNotFoundException(String appId, String clusterName) { - super("cluster not found for appId:%s clusterName:%s", appId, clusterName); - } -} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java deleted file mode 100644 index 475c7e97c80..00000000000 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ItemNotFoundException.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2023 Apollo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package com.ctrip.framework.apollo.common.exception; - -/** - * @author kl (http://kailing.pub) - * @since 2023/3/22 - */ -public class ItemNotFoundException extends NotFoundException{ - - public ItemNotFoundException(String appId, String clusterName, String namespaceName, long itemId) { - super("item not found for appId:%s clusterName:%s namespaceName:%s itemId:%s", appId, clusterName, namespaceName, itemId); - } - - public ItemNotFoundException(String appId, String clusterName, String namespaceName, String itemKey) { - super("item not found for appId:%s clusterName:%s namespaceName:%s itemKey:%s", appId, clusterName, namespaceName, itemKey); - } - - public ItemNotFoundException(long itemId) { - super("item not found for itemId:%s",itemId); - } - - public ItemNotFoundException(String itemKey) { - super("item not found for itemKey:%s",itemKey); - } -} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java deleted file mode 100644 index e877bec4d90..00000000000 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NamespaceNotFoundException.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2023 Apollo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package com.ctrip.framework.apollo.common.exception; - -/** - * @author kl (http://kailing.pub) - * @since 2023/3/21 - */ -public class NamespaceNotFoundException extends NotFoundException{ - - public NamespaceNotFoundException(String appId, String clusterName, String namespaceName) { - super("namespace not found for appId:%s clusterName:%s namespaceName:%s", appId, clusterName, namespaceName); - } - - public NamespaceNotFoundException(long namespaceId) { - super("namespace not found for namespaceId:%s", namespaceId); - } -} diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NotFoundException.java index c1568b25f54..8ba0cf43901 100644 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NotFoundException.java +++ b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/NotFoundException.java @@ -27,4 +27,41 @@ public NotFoundException(String msgTpl, Object... args) { super(msgTpl, args); setHttpStatus(HttpStatus.NOT_FOUND); } + + public static NotFoundException itemNotFound(long itemId) { + return new NotFoundException("item not found for itemId:%s",itemId); + } + + public static NotFoundException itemNotFound(String itemKey) { + return new NotFoundException("item not found for itemKey:%s",itemKey); + } + + public static NotFoundException itemNotFound(String appId, String clusterName, String namespaceName, String itemKey) { + return new NotFoundException("item not found for appId:%s clusterName:%s namespaceName:%s itemKey:%s", appId, clusterName, namespaceName, itemKey); + } + + public static NotFoundException itemNotFound(String appId, String clusterName, String namespaceName, long itemId) { + return new NotFoundException("item not found for appId:%s clusterName:%s namespaceName:%s itemId:%s", appId, clusterName, namespaceName, itemId); + } + + public static NotFoundException namespaceNotFound(String appId, String clusterName, String namespaceName) { + return new NotFoundException("namespace not found for appId:%s clusterName:%s namespaceName:%s", appId, clusterName, namespaceName); + } + + public static NotFoundException namespaceNotFound(long namespaceId) { + return new NotFoundException("namespace not found for namespaceId:%s", namespaceId); + } + + public static NotFoundException releaseNotFound(Object releaseId) { + return new NotFoundException("release not found for releaseId:%s", releaseId); + } + + public static NotFoundException clusterNotFound(String appId, String clusterName) { + return new NotFoundException("cluster not found for appId:%s clusterName:%s", appId, clusterName); + } + + public static NotFoundException appNotFound(String appId) { + return new NotFoundException("app not found for appId:%s", appId); + } + } diff --git a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java b/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java deleted file mode 100644 index 63763bd66ef..00000000000 --- a/apollo-common/src/main/java/com/ctrip/framework/apollo/common/exception/ReleaseNotFoundException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2023 Apollo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -package com.ctrip.framework.apollo.common.exception; - -/** - * @author kl (http://kailing.pub) - * @since 2023/3/21 - */ -public class ReleaseNotFoundException extends NotFoundException{ - - public ReleaseNotFoundException(Object releaseId) { - super("release not found for releaseId:%s", releaseId); - } -} diff --git a/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java b/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java index 408b1e7113a..51827805ba8 100644 --- a/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java +++ b/apollo-common/src/test/java/com/ctrip/framework/apollo/common/exception/NotFoundExceptionTest.java @@ -37,30 +37,45 @@ public void testConstructor() { } @Test - public void testAppNotFountException() { - AppNotFountException exception = new AppNotFountException(appId); + public void testAppNotFoundException() { + NotFoundException exception = NotFoundException.appNotFound(appId); Assert.assertEquals(exception.getMessage(), "app not found for appId:app-1001"); } @Test - public void testClusterNotFountException() { - ClusterNotFoundException exception = new ClusterNotFoundException(appId, clusterName); + public void testClusterNotFoundException() { + NotFoundException exception = NotFoundException.clusterNotFound(appId, clusterName); Assert.assertEquals(exception.getMessage(), "cluster not found for appId:app-1001 clusterName:test"); } @Test - public void testNamespaceNotFountException() { - NamespaceNotFoundException exception = new NamespaceNotFoundException(appId, clusterName, namespaceName); + public void testNamespaceNotFoundException() { + NotFoundException exception = NotFoundException.namespaceNotFound(appId, clusterName, namespaceName); Assert.assertEquals(exception.getMessage(), "namespace not found for appId:app-1001 clusterName:test namespaceName:application"); - exception = new NamespaceNotFoundException(66); + exception = NotFoundException.namespaceNotFound(66); Assert.assertEquals(exception.getMessage(), "namespace not found for namespaceId:66"); } @Test - public void testReleaseNotFountException() { - ReleaseNotFoundException exception = new ReleaseNotFoundException(66); + public void testReleaseNotFoundException() { + NotFoundException exception = NotFoundException.releaseNotFound(66); Assert.assertEquals(exception.getMessage(), "release not found for releaseId:66"); } + @Test + public void testItemNotFoundException(){ + NotFoundException exception = NotFoundException.itemNotFound(66); + Assert.assertEquals(exception.getMessage(), "item not found for itemId:66"); + + exception = NotFoundException.itemNotFound("test.key"); + Assert.assertEquals(exception.getMessage(), "item not found for itemKey:test.key"); + + exception = NotFoundException.itemNotFound(appId, clusterName, namespaceName, "test.key"); + Assert.assertEquals(exception.getMessage(), "item not found for appId:app-1001 clusterName:test namespaceName:application itemKey:test.key"); + + exception = NotFoundException.itemNotFound(appId, clusterName, namespaceName, 66); + Assert.assertEquals(exception.getMessage(), "item not found for appId:app-1001 clusterName:test namespaceName:application itemId:66"); + } + } \ No newline at end of file diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java index b1186075d77..c9afb429e4b 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/ItemController.java @@ -18,7 +18,7 @@ import com.ctrip.framework.apollo.common.dto.ItemDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.RequestPrecondition; import com.ctrip.framework.apollo.core.utils.StringUtils; import com.ctrip.framework.apollo.openapi.api.ItemOpenApiService; @@ -153,7 +153,7 @@ public void deleteItem(@PathVariable String appId, @PathVariable String env, ItemDTO toDeleteItem = itemService.loadItem(Env.valueOf(env), appId, clusterName, namespaceName, key); if (toDeleteItem == null) { - throw new ItemNotFoundException(appId, clusterName, namespaceName, key); + throw NotFoundException.itemNotFound(appId, clusterName, namespaceName, key); } this.itemOpenApiService.removeItem(appId, env, clusterName, namespaceName, key, operator); diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java index 5105d351df8..ca1292317bd 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/controller/ReleaseController.java @@ -18,7 +18,7 @@ import com.ctrip.framework.apollo.common.dto.ReleaseDTO; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.ReleaseNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.portal.environment.Env; import com.ctrip.framework.apollo.portal.component.PermissionValidator; import com.ctrip.framework.apollo.portal.component.config.PortalConfig; @@ -134,7 +134,7 @@ public ReleaseDTO get(@PathVariable String env, ReleaseDTO release = releaseService.findReleaseById(Env.valueOf(env), releaseId); if (release == null) { - throw new ReleaseNotFoundException(releaseId); + throw NotFoundException.releaseNotFound(releaseId); } return release; } @@ -184,7 +184,7 @@ public void rollback(@PathVariable String env, ReleaseDTO release = releaseService.findReleaseById(Env.valueOf(env), releaseId); if (release == null) { - throw new ReleaseNotFoundException(releaseId); + throw NotFoundException.releaseNotFound(releaseId); } if (!permissionValidator.hasReleaseNamespacePermission(release.getAppId(), release.getNamespaceName(), env)) { diff --git a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java index 2a70aff2154..81970c9c38c 100644 --- a/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java +++ b/apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/service/ItemService.java @@ -20,7 +20,7 @@ import com.ctrip.framework.apollo.common.constants.GsonType; import com.ctrip.framework.apollo.common.dto.*; import com.ctrip.framework.apollo.common.exception.BadRequestException; -import com.ctrip.framework.apollo.common.exception.ItemNotFoundException; +import com.ctrip.framework.apollo.common.exception.NotFoundException; import com.ctrip.framework.apollo.common.utils.BeanUtils; import com.ctrip.framework.apollo.core.enums.ConfigFileFormat; import com.ctrip.framework.apollo.openapi.utils.UrlUtils; @@ -177,7 +177,7 @@ public ItemDTO loadItem(Env env, String appId, String clusterName, String namesp public ItemDTO loadItemById(Env env, long itemId) { ItemDTO item = itemAPI.loadItemById(env, itemId); if (item == null) { - throw new ItemNotFoundException(itemId); + throw NotFoundException.itemNotFound(itemId); } return item; }
Apollo配置中心技术支持③群
群号:742035428
Apollo配置中心技术支持④群
群号:516773934
Apollo配置中心技术支持③群
群号:742035428(已满)
Apollo配置中心技术支持②群
群号:904287263(已满)
Apollo配置中心技术支持①群
群号:375526581(已满)
tech-support-qq-4 tech-support-qq-3 tech-support-qq-2 tech-support-qq-1