Java 流程构建器模式问题
Java process builder issue with schema
我正在使用 java 进程构建器来执行 curl 命令以将架构发布到架构注册表但是
得到错误。架构格式问题,不确定如何作为流程构建器的参数传递。请提供任何建议
enter code here
sourceSchema = "{"additionalProperties":false,"properties":{"age":{"type":"integer"},"firstname":{"type":"string"},"lastname":{"type":"string","minLength":2,"maxLength":4},"email":{"type":"string","format":"email"},"designation":{"default":"","type":"string"},"mobile":{"type":"string","pattern":"^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$"}},"required":["firstname","lastname","age"],"title":"customer","type":"object"}";
String convertSourceSchema = sourceSchema.replace("\"", "\\"");
String constructSourceSchema = "{\"schema\":\""+convertSourceSchema+"\",\"schemaType\":\"JSON\"}";
String[] command = {"curl", "-k", "-X", "POST", "-H", "Content-Type: application/vnd.schemaregistry.v1+json", "--data", ""+constructSourceSchema+"", ""+url+""};
ProcessBuilder process = new ProcessBuilder(command);
Process p;
try
{
process.redirectErrorStream(true);
p = process.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line);
//builder.append(",");
}
String result = builder.toString();
System.out.print(result);
}
catch (Exception e)
{ System.out.print("error");
e.printStackTrace();
}
> Blockquote
error am getting
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0100 635 100 208 100 427 208 427 0:00:01 --:--:-- 0:00:01 2396Unexpected character ('s' (code 115)): was expecting double-quote to start field name at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 3]2021-02-24 11:19:16.409 INFO 18428 --- [nio-8080-exec-1] c.c.e.s.u.c.SchemaPublisherUtility
[curl, -k, -X, POST, -H, Content-Type: application/vnd.schemaregistry.v1+json, --data, {"schema":"{\"additionalProperties\":false,\"properties\":{\"age\":{\"type\":\"integer\"},\"firstname\":{\"type\":\"string\"},\"lastname\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":4},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"designation\":{\"default\":\"\",\"type\":\"string\"},\"mobile\":{\"type\":\"string\",\"pattern\":\"^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$\"}},\"required\":[\"firstname\",\"lastname\",\"age\"],\"title\":\"customer\",\"type\":\"object\"}","schemaType":"JSON"}, https://hostname/topicname-value/versions]
@RequestBody schema --> {"schema":"{\"additionalProperties\":false,\"properties\":{\"age\":{\"type\":\"integer\"},\"firstname\":{\"type\":\"string\"},\"lastname\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":4},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"designation\":{\"default\":\"\",\"type\":\"string\"},\"mobile\":{\"type\":\"string\",\"pattern\":\"^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$\"}},\"required\":[\"firstname\",\"lastname\",\"age\"],\"title\":\"customer\",\"type\":\"object\"}","schemaType":"JSON"}
public class SchemaPublisherUtility {
private final Logger LOG = LoggerFactory.getLogger(getClass());
String url = "https://hostname/topicname-value/versions";
String Topic = "dev.json.schemaregistry";
ObjectMapper objectMapper = new ObjectMapper();
@PostMapping(path = "/publishschema", consumes = "application/json", produces = "application/json")
public void addSchema(@RequestBody String sourceSchema) throws IOException {
LOG.info("Schema Publish Started");
String convertSourceSchema = sourceSchema.replace("\"", "\\"");
String constructSourceSchema = "{\"schema\":\"" + convertSourceSchema + "\",\"schemaType\":\"JSON\"}";
try {
URL requestUrl = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) requestUrl.openConnection();
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(constructSourceSchema);
out.close();
new InputStreamReader(conn.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
LOG.info("Schema Publish Completed");
}
}
我正在使用 java 进程构建器来执行 curl 命令以将架构发布到架构注册表但是 得到错误。架构格式问题,不确定如何作为流程构建器的参数传递。请提供任何建议
enter code here
sourceSchema = "{"additionalProperties":false,"properties":{"age":{"type":"integer"},"firstname":{"type":"string"},"lastname":{"type":"string","minLength":2,"maxLength":4},"email":{"type":"string","format":"email"},"designation":{"default":"","type":"string"},"mobile":{"type":"string","pattern":"^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$"}},"required":["firstname","lastname","age"],"title":"customer","type":"object"}";
String convertSourceSchema = sourceSchema.replace("\"", "\\"");
String constructSourceSchema = "{\"schema\":\""+convertSourceSchema+"\",\"schemaType\":\"JSON\"}";
String[] command = {"curl", "-k", "-X", "POST", "-H", "Content-Type: application/vnd.schemaregistry.v1+json", "--data", ""+constructSourceSchema+"", ""+url+""};
ProcessBuilder process = new ProcessBuilder(command);
Process p;
try
{
process.redirectErrorStream(true);
p = process.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
builder.append(line);
//builder.append(",");
}
String result = builder.toString();
System.out.print(result);
}
catch (Exception e)
{ System.out.print("error");
e.printStackTrace();
}
> Blockquote
error am getting
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0100 635 100 208 100 427 208 427 0:00:01 --:--:-- 0:00:01 2396Unexpected character ('s' (code 115)): was expecting double-quote to start field name at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 1, column: 3]2021-02-24 11:19:16.409 INFO 18428 --- [nio-8080-exec-1] c.c.e.s.u.c.SchemaPublisherUtility
[curl, -k, -X, POST, -H, Content-Type: application/vnd.schemaregistry.v1+json, --data, {"schema":"{\"additionalProperties\":false,\"properties\":{\"age\":{\"type\":\"integer\"},\"firstname\":{\"type\":\"string\"},\"lastname\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":4},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"designation\":{\"default\":\"\",\"type\":\"string\"},\"mobile\":{\"type\":\"string\",\"pattern\":\"^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$\"}},\"required\":[\"firstname\",\"lastname\",\"age\"],\"title\":\"customer\",\"type\":\"object\"}","schemaType":"JSON"}, https://hostname/topicname-value/versions]
@RequestBody schema --> {"schema":"{\"additionalProperties\":false,\"properties\":{\"age\":{\"type\":\"integer\"},\"firstname\":{\"type\":\"string\"},\"lastname\":{\"type\":\"string\",\"minLength\":2,\"maxLength\":4},\"email\":{\"type\":\"string\",\"format\":\"email\"},\"designation\":{\"default\":\"\",\"type\":\"string\"},\"mobile\":{\"type\":\"string\",\"pattern\":\"^(\\([0-9]{3}\\))?[0-9]{3}-[0-9]{4}$\"}},\"required\":[\"firstname\",\"lastname\",\"age\"],\"title\":\"customer\",\"type\":\"object\"}","schemaType":"JSON"}
public class SchemaPublisherUtility {
private final Logger LOG = LoggerFactory.getLogger(getClass());
String url = "https://hostname/topicname-value/versions";
String Topic = "dev.json.schemaregistry";
ObjectMapper objectMapper = new ObjectMapper();
@PostMapping(path = "/publishschema", consumes = "application/json", produces = "application/json")
public void addSchema(@RequestBody String sourceSchema) throws IOException {
LOG.info("Schema Publish Started");
String convertSourceSchema = sourceSchema.replace("\"", "\\"");
String constructSourceSchema = "{\"schema\":\"" + convertSourceSchema + "\",\"schemaType\":\"JSON\"}";
try {
URL requestUrl = new URL(url);
HttpsURLConnection conn = (HttpsURLConnection) requestUrl.openConnection();
conn.setRequestProperty("Content-Type", "application/json");
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(constructSourceSchema);
out.close();
new InputStreamReader(conn.getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
LOG.info("Schema Publish Completed");
}
}