/*
* Copyright 2012 Amazon Technologies, 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://aws.amazon.com/apache2.0
*
* This file 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 com.amazonaws.eclipse.cloudformation.templates;
import com.fasterxml.jackson.core.JsonLocation;
/**
* Abstract base class representing a generic JSON node in a Template document.
*/
public abstract class TemplateNode {
private TemplateNode parent;
private JsonLocation startLocation;
private JsonLocation endLocation;
public TemplateNode getParent() {
return parent;
}
public void setParent(TemplateNode parent) {
this.parent = parent;
}
public String getPath() {
String path = "";
TemplateNode node = parent;
while (node != null) {
if (node.isField()) {
path = ((TemplateFieldNode)node).getText() + "/" + path;
}
node = node.getParent();
}
return "ROOT/" + path;
}
public boolean isField() {
return false;
}
public boolean isObject() {
return false;
}
public boolean isArray() {
return false;
}
public boolean isValue() {
return false;
}
public JsonLocation getStartLocation() {
return startLocation;
}
public void setStartLocation(JsonLocation startLocation) {
this.startLocation = startLocation;
}
public JsonLocation getEndLocation() {
return endLocation;
}
public void setEndLocation(JsonLocation endLocation) {
this.endLocation = endLocation;
}
}