重构get请求代码---PartyLocation
将原理在PersonDto中定义的partyLocations,剪切到PartyDto中去。
@JsonApiToMany private List<PartyLocationDto> partyLocations;
重构PersonConverter中的updateDto方法,
@Overridepublic void updateDto(Person entity, PersonDto dto) { Locale l = currentUserProvider.get().getLocale(); partyConverter.updateDto(entity, dto); dto.setPronunciation(entity.getPronunciation()); ....}
PartyConverter代码重构如下:
public class PartyConverter implements Converter<Party, PartyDto> { @Inject private ApiContext apiContext; @Override public void updateDto(Party party, PartyDto partyDto){ partyDto.setId(party.getId()); partyDto.setName(party.getName()); partyDto.setSpecificResourceType(new ResourceDto(apiContext.getResourceType(party), partyDto.getId())); setPartyLocations(party, partyDto); } @Override public void updateEntity(PartyDto dto, Party entity) { // System.out.println("--"); PersonEntity personEntity = (PersonEntity)entity; } public void setPartyLocations(Party party, PartyDto partyDto){ List<PartyLocationDto> partyLocationDtoList = new ArrayList<PartyLocationDto>(); if(Objects.isNull(party.getPartyLocations())){ return ; } for(PartyLocation partyLocation:party.getPartyLocations()){ PartyLocationDto partyLocationDto = new PartyLocationDto(partyLocation.getId()); partyLocationDtoList.add(partyLocationDto); } partyDto.setPartyLocations(partyLocationDtoList); } }
修改relationship:注意,传递的参数是PersonDto,如果是PartyDto,则会报错relationship出错,思考为什么。
@Singleton public class PersonToPartyLocationRelationship extends AbstractEntityToPartyLocationRelationship<PersonDto> { }
public abstract class AbstractEntityToPartyLocationRelationship<S extends AbstractKatharsisDto> extends AbstractRelationshipRepository<S, PartyLocationDto> { @Override public List<PartyLocation> getTargetEntities(Object source, String fieldName, QueryParamsHelper helper) { Party sourceEntity = cast(source); List<PartyLocation> partyLocations = new ArrayList<PartyLocation>(); if(!Objects.isNull(sourceEntity.getPartyLocations())){ partyLocations.addAll(sourceEntity.getPartyLocations()); } return partyLocations; } @Override public void addRelations(S source, Iterable<String> targetIds, String fieldName) { } }
再次编译,则可以get请求成功。同时,post请求也是ok的。
补充:何时调用relationship,这是kathasis内部自己定义的,与类名是没有关系的,主要是和传递的泛型参数有很大的关系。--------感谢andrew指导分析这个知识点。
重构get请求代码---PartyLocation的更多相关文章
- HTTP请求代码整理
HTTP请求代码整理 类别 代码 注释 1xx – 信息提示 100 继续 101 切换协议 2xx - 成功 200 确定.客户端请求已成功 201 已创建 202 已接受 203 非权威性信息 2 ...
- jmeter 的java请求代码在main方法里面执行
1.新建一个java请求执行加法类 public class TestDemo { public int Tdemo(int a,int b){ int sum = 0; sum = a+b; ret ...
- 如何重构"箭头型"代码
本文主要起因是,一次在微博上和朋友关于嵌套好几层的if-else语句的代码重构的讨论(微博原文),在微博上大家有各式各样的问题和想法.按道理来说这些都是编程的基本功,似乎不太值得写一篇文章,不过我觉得 ...
- 使用策略模式重构switch case 代码
目录 1.背景 2.案例 3.switch…case…方式实现 4.switch…case…带来的问题 5.使用策略模式重构switch…case…代码 6.总结 1.背景 之前在看<重构 ...
- js基石之---易读、易复用、易重构的 JavaScript 代码规范
易读.易复用.易重构的 JavaScript 代码规范 1.变量命名规范有意义 Bad: const yyyymmdstr = moment().format("YYYY/MM/DD&quo ...
- RAID5 IO处理之写请求代码详解
我们知道RAID5一个条带上的数据是由N个数据块和1个校验块组成,其校验块由N个数据块通过异或运算得出,这样才能在任意一个成员磁盘失效时通过其他N个成员磁盘恢复出用户写入的数据.这也就要求RAID5条 ...
- .NET重构—单元测试的代码重构
阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: ...
- C# 主动发起请求代码
本文用于写代码是给提示 private string GetHW(string uri) { string returnStr = ""; HttpWebRequest hwReq ...
- 重构 MVC; 代码分享工具(重构,改进,打分)
include 模块和 extend 模块的不同: Class Extension: 通过向singleton class中加入Module来定义class method,是对象扩展的一个特例. ...
随机推荐
- PHP提供的数组比较函数总结
在我们看PHP手册的时候发现,PHP提供了许多数组元素比较的函数,看起来又多又烦又不好记,现在我们来总结一下: sort() — 本函数对数组进行排序,当本函数结束时数组单元将被从最低到最高重新安排. ...
- SQL Server 索引中include
SQL Server 索引中include的魅力(具有包含性列的索引) http://www.cnblogs.com/gaizai/archive/2010/01/11/1644358.html 开文 ...
- identityservice4使用案例
一 使用缘由 最近写微服务的blog,研读了o’reilly出的 <building Microservices With Asp.net Core>,其中使用的微服务分布式权限组件是mi ...
- IntellJ IDEA快捷键汇总
今天开始使用IDEA,各种不习惯,一会Eclipse一会IDEA来回切换,需要一个熟悉的过程,记录一下常用的快捷键. IDEA常用快捷键 Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+ ...
- Jetty + Servlet 实现文件下载
Jetty非常适合做嵌入式web开发,正如Jetty的口号"Don’t deploy your application in Jetty, deploy Jetty in your appl ...
- 四 Mixer
Mixer在应用程序和基础架构后端之间提供通过中介层.它的设计将策略决策移出应用层,用运维人员能够控制的配置取而代之. Mixer的设计目的是改变层次之间的边界,以此降低总体复杂性.从服务代码中剔除策 ...
- Scala的Json序列化
import java.util.TimeZone import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMappe ...
- Java事务的原理与应用
Java事务的原理与应用 一.什么是Java事务 事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(consistency).隔离性 (isolation ...
- 2016.8.17服务器端数据库用户导入导出方法 expdp和impdp
EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用. IMP只适用于EXP导出的 ...
- 第八章 JVM内存管理(待续)
物理内存与虚拟内存 内核空间与用户空间 在Java中哪些组件需要使用内存 JVM内存结构 JVM内存分配策略 JVM内存回收策略 内存问题分析