Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
ParameterizedResourceConfig.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2020 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.autopsy.integrationtesting.config;
20
21import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
22import com.fasterxml.jackson.core.JsonParser;
23import com.fasterxml.jackson.core.JsonProcessingException;
24import com.fasterxml.jackson.databind.DeserializationContext;
25import com.fasterxml.jackson.databind.JsonNode;
26import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
27import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
28import com.fasterxml.jackson.databind.node.ArrayNode;
29import com.fasterxml.jackson.databind.node.ObjectNode;
30import com.fasterxml.jackson.databind.node.TextNode;
31import com.fasterxml.jackson.databind.node.ValueNode;
32import java.io.IOException;
33import java.util.ArrayList;
34import java.util.Collections;
35import java.util.Iterator;
36import java.util.LinkedHashMap;
37import java.util.List;
38import java.util.Map;
39
43@JsonIgnoreProperties(ignoreUnknown = true)
46
54 public static class ParameterizedResourceConfigDeserializer extends StdDeserializer<ParameterizedResourceConfig> {
55
56 private static final long serialVersionUID = 1L;
57
62 this(null);
63 }
64
71 super(vc);
72 }
73
74 @Override
75 public ParameterizedResourceConfig deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
76 JsonNode node = jp.getCodec().readTree(jp);
77
78 // if no node, return null.
79 if (node == null) {
80 return null;
81 } else if (node instanceof TextNode) {
82 // if just a string, return a ParameterizedResourceConfig where the resource is the string.
83 return new ParameterizedResourceConfig(node.textValue());
84 } else {
85 // otherwise, determine the resource and create an object
86 JsonNode resourceNode = node.get("resource");
87 String resource = (resourceNode != null) ? resourceNode.asText() : null;
88
89 Map<String, Object> parameters = null;
90 JsonNode parametersNode = node.get("parameters");
91 if (parametersNode != null && parametersNode.isObject()) {
92 parameters = readMap((ObjectNode) parametersNode);
93 }
94
96 }
97 }
98
105 Map<String, Object> readMap(ObjectNode node) {
106 Map<String, Object> jsonObject = new LinkedHashMap<>();
107 Iterator<Map.Entry<String, JsonNode>> keyValIter = node.fields();
108 while (keyValIter.hasNext()) {
109 Map.Entry<String, JsonNode> keyVal = keyValIter.next();
110 jsonObject.put(keyVal.getKey(), readItem(keyVal.getValue()));
111 }
112 return jsonObject;
113 }
114
121 List<Object> readList(ArrayNode node) {
122 List<Object> objArr = new ArrayList<>();
123 for (JsonNode childNode : node) {
124 objArr.add(readItem(childNode));
125 }
126 return objArr;
127 }
128
136 Object readJsonPrimitive(ValueNode vNode) {
137 if (vNode.isTextual()) {
138 return vNode.asText();
139 } else if (vNode.isBoolean()) {
140 return vNode.asBoolean();
141 } else if (vNode.isLong()) {
142 return vNode.asLong();
143 } else if (vNode.isInt()) {
144 return vNode.asInt();
145 } else if (vNode.isDouble()) {
146 return vNode.asDouble();
147 }
148
149 return null;
150 }
151
158 Object readItem(JsonNode node) {
159 if (node == null) {
160 return null;
161 }
162
163 if (node.isObject()) {
164 return readMap((ObjectNode) node);
165 } else if (node.isArray()) {
166 return readList((ArrayNode) node);
167 } else if (node.isValueNode()) {
168 return readJsonPrimitive((ValueNode) node);
169 }
170
171 return null;
172 }
173 }
174
175 private final String resource;
176 private final Map<String, Object> parameters;
177
184 public ParameterizedResourceConfig(String resource, Map<String, Object> parameters) {
185 this.resource = resource;
186 this.parameters = (parameters == null) ? Collections.emptyMap() : parameters;
187 }
188
195 this(resource, null);
196 }
197
201 public String getResource() {
202 return resource;
203 }
204
210 public Map<String, Object> getParameters() {
211 return parameters == null ? Collections.emptyMap() : Collections.unmodifiableMap(parameters);
212 }
213}

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.