/******************************************************************************* * Cloud Foundry * Copyright (c) [2009-2016] Pivotal Software, Inc. All Rights Reserved. * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. *******************************************************************************/ package org.cloudfoundry.identity.uaa.login; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import org.springframework.util.StringUtils; public class Prompt { private final String name; private final String text; private final String type; @JsonCreator public Prompt(@JsonProperty("name") String name, @JsonProperty("type") String type, @JsonProperty("text") String text) { this.name = name; this.type = type; this.text = text; } public String getName() { return name; } public String getText() { return text; } public String getType() { return type; } @JsonIgnore public String[] getDetails() { return new String[] { type, text }; } public static Prompt valueOf(String text) { if (!StringUtils.hasText(text)) { return null; } String[] parts = text.split(":"); if (parts.length < 2) { return null; } String name = parts[0].replaceAll("\"", ""); String[] values = parts[1].replaceAll("\"", "").replaceAll("\\[", "").replaceAll("\\]", "").split(","); values = StringUtils.trimArrayElements(values); return new Prompt(name, values[0], values[1]); } @Override public String toString() { return String.format("\"%s\":[\"%s\",\"%s\"]", name, type, text); } @Override public int hashCode() { return 31 + toString().hashCode(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Prompt other = (Prompt) obj; return toString().equals(other.toString()); } }