blob: 29ea5b6a3d36e801d9b94f98e668b741e4e8e704 [file] [log] [blame]
/**
* Copyright (c) 2013-2016 Angelo ZERR.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
*/
package org.eclipse.json.impl.schema;
import java.io.IOException;
import java.io.Reader;
import java.util.Collection;
import org.eclipse.json.IValidationReporter;
import org.eclipse.json.jsonpath.IJSONPath;
import org.eclipse.json.provisonnal.com.eclipsesource.json.JsonObject;
import org.eclipse.json.provisonnal.com.eclipsesource.json.JsonValue;
import org.eclipse.json.schema.IJSONSchemaDocument;
import org.eclipse.json.schema.IJSONSchemaProperty;
@SuppressWarnings("serial")
public class JSONSchemaDocument extends JSONSchemaNode implements
IJSONSchemaDocument {
public JSONSchemaDocument(Reader reader) throws IOException {
super(JsonObject.readFrom(reader), null);
}
@Override
public IJSONSchemaProperty getProperty(IJSONPath path) {
if (path == null || path.getSegments() == null || path.getSegments().length <= 0) {
return this;
}
String[] segments = path.getSegments();
String segment = segments[0];
if (segment == null) {
return null;
}
IJSONSchemaProperty property = getProperties().get(segment);
if (property != null) {
return getProperty(property, segments, 1);
}
return null;
}
private IJSONSchemaProperty getProperty(IJSONSchemaProperty node, String[] segments, int level) {
if (segments.length < (level + 1)) {
return node;
}
String segment = segments[level];
Collection<IJSONSchemaProperty> props = node.getProperties().values();
for (IJSONSchemaProperty property : props) {
if (segment.equals(property.getName())) {
return getProperty(property, segments, level + 1);
}
}
return null;
}
public void validate(JsonValue value, IValidationReporter reporter) {
// TODO Auto-generated method stub
}
@Override
public String getName() {
return ""; //$NON-NLS-1$
}
}