/* * Copyright 2017 ThoughtWorks, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package cd.go.contrib.elasticagent.utils; import com.google.gson.*; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonToken; import com.google.gson.stream.JsonWriter; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.nio.charset.StandardCharsets; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Properties; import java.util.TimeZone; import static cd.go.contrib.elasticagent.Constants.KUBERNETES_POD_CREATION_TIME_FORMAT; public class Util { public static final Gson GSON = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .excludeFieldsWithoutExposeAnnotation() .create(); public static SimpleDateFormat getSimpleDateFormat() { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(KUBERNETES_POD_CREATION_TIME_FORMAT); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); return simpleDateFormat; } public static String readResource(String resourceFile) { return new String(readResourceBytes(resourceFile), StandardCharsets.UTF_8); } public static byte[] readResourceBytes(String resourceFile) { try (InputStream is = Util.class.getResourceAsStream(resourceFile)) { return readFully(is); } catch (IOException e) { throw new RuntimeException("Could not find resource " + resourceFile, e); } } private static byte[] readFully(InputStream input) throws IOException { byte[] buffer = new byte[8192]; int bytesRead; ByteArrayOutputStream output = new ByteArrayOutputStream(); while ((bytesRead = input.read(buffer)) != -1) { output.write(buffer, 0, bytesRead); } return output.toByteArray(); } public static String pluginId() { String s = readResource("/plugin.properties"); try { Properties properties = new Properties(); properties.load(new StringReader(s)); return (String) properties.get("id"); } catch (IOException e) { throw new RuntimeException(e); } } public static String fullVersion() { String s = readResource("/plugin.properties"); try { Properties properties = new Properties(); properties.load(new StringReader(s)); return properties.getProperty("version"); } catch (IOException e) { throw new RuntimeException(e); } } public static TypeAdapter<Number> IntTypeAdapter = new TypeAdapter<Number>() { @Override public void write(JsonWriter out, Number value) throws IOException { out.value(value); } @Override public Number read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } try { String result = in.nextString(); if ("".equals(result)) { return null; } return Integer.parseInt(result); } catch (NumberFormatException e) { throw new JsonSyntaxException(e); } } }; }