重构get请求代码---PartyLocation

发布时间:2017-7-9 7:11:36编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"重构get请求代码---PartyLocation ",主要涉及到重构get请求代码---PartyLocation 方面的内容,对于重构get请求代码---PartyLocation 感兴趣的同学可以参考一下。

将原理在PersonDto中定义的partyLocations,剪切到PartyDto中去。

   @JsonApiToMany    private List<PartyLocationDto> partyLocations;

重构PersonConverter中的updateDto方法,

@Override
public 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出错,思考为什么

@Singletonpublic 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指导分析这个知识点。


上一篇:ReactiveCocoa源码解析(五) SignalProtocol的observe()、Map、Filter延展实现
下一篇:数组的Length属性用起来比把长度放在一个局部变量高效

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款