public TRepositoryDefinition build() { return new TRepositoryDefinition(this); } }
@Override public String toString() { return "TRepositoryDefinition{" + "description='" + getDescription() + '\'' + ", url='" + getUrl() + '\'' + ", credential=" + getCredential() + '}'; }
public TRepositoryDefinition(Builder builder) { this.setUrl(builder.url); this.setDescription(builder.description); this.setCredential(builder.credential); }
@Override public Result visit(TRepositoryDefinition node, Parameter parameter) { if (Objects.isNull(node)) return null; if (Objects.isNull(node.getUrl()) || node.getUrl().isEmpty()) { setException(new UndefinedRequiredKeyname("Field 'url' is required") .setContext(parameter.getContext()) ); } if (Objects.nonNull(node.getCredential())) { Credential credential = node.getCredential(); if (Objects.isNull(credential.getToken()) || credential.getToken().isEmpty()) { setException(new UndefinedRequiredKeyname("Field 'credential.token' is required") .setContext(parameter.getContext()) ); } if (Objects.isNull(credential.getTokenType()) || credential.getTokenType().isEmpty()) { setException(new UndefinedRequiredKeyname("Field 'credential.token_type' is required") .setContext(parameter.getContext()) ); } } return super.visit(node, parameter); }
@Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof TRepositoryDefinition)) return false; TRepositoryDefinition that = (TRepositoryDefinition) o; return Objects.equals(getDescription(), that.getDescription()) && Objects.equals(getUrl(), that.getUrl()) && Objects.equals(getCredential(), that.getCredential()); }
@Nullable public TRepositoryDefinition buildRepositoryDefinition(Object object, Parameter<TRepositoryDefinition> parameter) { if (Objects.isNull(object)) return new TRepositoryDefinition(); if (object instanceof String) return new TRepositoryDefinition.Builder(stringValue(object)).build(); if (!validate(TRepositoryDefinition.class, object, parameter)) return null; @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String, Object>) object; return new TRepositoryDefinition.Builder(stringValue(map.get("url"))) .setDescription(buildDescription(map.get("description"))) .setCredential(buildCredential(map.get("credential"), new Parameter<Credential>(parameter.getContext()).addContext("credential") )) .build(); }
@Override public int hashCode() { return Objects.hash(getDescription(), getUrl(), getCredential()); }
public Printer visit(TRepositoryDefinition node, Parameter parameter) { Printer printer = new Printer(parameter.getIndent()) .printKeyValue("description", node.getDescription()) .printKeyValue("url", node.getUrl()); if (Objects.nonNull(node.getCredential())) { Credential credential = node.getCredential(); printer.printKey("credential") .indent(INDENT_SIZE) .printKeyValue("protocol", credential.getProtocol()) .printKeyValue("token_type", credential.getTokenType()) .printKeyValue("token", credential.getToken()) .printKeyObject("keys", credential.getKeys()) .printKeyValue("user", credential.getUser()) .indent(-INDENT_SIZE); } return printer; }