Class RetainPathsJsonAction
- java.lang.Object
-
- net.minidev.json.actions.traverse.RetainPathsJsonAction
-
- All Implemented Interfaces:
JSONTraverseAction,TreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>
public class RetainPathsJsonAction extends Object implements JSONTraverseAction
Retain branches or parts of branches matching a specified list of paths.Paths are matched from the root down. If a user-specified path ends at a non-leaf node, the rest of the branch from that node to the leaf is not retained.
A path is not removed from the user-specified list once its processing is over, because identical objects in the same array are supported by this action.
See package-info for more details
See unit tests for examples
- Author:
- adoneitan@gmail.com
-
-
Field Summary
Fields Modifier and Type Field Description protected PathDelimiterdelimprotected List<String>pathsToRetainprotected net.minidev.json.JSONObjectresult
-
Constructor Summary
Constructors Constructor Description RetainPathsJsonAction(List<String> pathsToRetain, PathDelimiter delim)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected booleandiscardPath(String pathToEntry, Map.Entry<String,Object> entry)if the full path to the entry is not contained in any of the paths to retain - remove it from the object this step does not remove entries whose full path is contained in a path to retain but are not equal to an entry to retainvoidend()called after the traversal ends, and just before theTreeTraverseAction.start(M)method exitsprotected booleanfoundAsPrefix(String path)voidhandleLeaf(String fullPathToContainingList, int listIndex, Object listItem)called for each leaf of an L list is encounteredvoidhandleLeaf(String pathToEntry, Map.Entry<String,Object> entry)called for each leaf of an M map is encounteredbooleanrecurInto(String fullPathToArrayItem, net.minidev.json.JSONArray entryValue)called when a non-leaf item is encountered inside an L objectbooleanrecurInto(String fullPathToSubtree, net.minidev.json.JSONObject entryValue)called when a non-leaf entry is encountered inside an M objectbooleanremoveEntry(String fullPathToEntry, Map.Entry<String,Object> entry)the last callback for each entry in anTreeTraverseActionmap.Objectresult()holds the result of the traversal, as assigned by the action implementing this interfacebooleanstart(net.minidev.json.JSONObject object)called before any traversal of theTreeTraverseActiontree startsbooleantraverseEntry(String fullPathToEntry, Map.Entry<String,Object> entry)called when a new entry is encountered and before any processing is performed on it
-
-
-
Field Detail
-
delim
protected final PathDelimiter delim
-
result
protected net.minidev.json.JSONObject result
-
-
Constructor Detail
-
RetainPathsJsonAction
public RetainPathsJsonAction(List<String> pathsToRetain, PathDelimiter delim)
- Parameters:
pathsToRetain- TODOdelim- TODO
-
-
Method Detail
-
start
public boolean start(net.minidev.json.JSONObject object)
Description copied from interface:TreeTraverseActioncalled before any traversal of theTreeTraverseActiontree starts- Specified by:
startin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
object- TODO- Returns:
- true if traversal should start at all
-
traverseEntry
public boolean traverseEntry(String fullPathToEntry, Map.Entry<String,Object> entry)
Description copied from interface:TreeTraverseActioncalled when a new entry is encountered and before any processing is performed on it- Specified by:
traverseEntryin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
fullPathToEntry- TODOentry- TODO- Returns:
- true if the entry should be processed
-
recurInto
public boolean recurInto(String fullPathToSubtree, net.minidev.json.JSONObject entryValue)
Description copied from interface:TreeTraverseActioncalled when a non-leaf entry is encountered inside an M object- Specified by:
recurIntoin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
fullPathToSubtree- TODOentryValue- TODO- Returns:
- true if the non-leaf entry should be recursively traversed
-
recurInto
public boolean recurInto(String fullPathToArrayItem, net.minidev.json.JSONArray entryValue)
Description copied from interface:TreeTraverseActioncalled when a non-leaf item is encountered inside an L object- Specified by:
recurIntoin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
fullPathToArrayItem- TODOentryValue- TODO- Returns:
- true if the non-leaf item should be recursively traversed
-
handleLeaf
public void handleLeaf(String pathToEntry, Map.Entry<String,Object> entry)
Description copied from interface:TreeTraverseActioncalled for each leaf of an M map is encountered- Specified by:
handleLeafin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
pathToEntry- TODOentry- TODO
-
handleLeaf
public void handleLeaf(String fullPathToContainingList, int listIndex, Object listItem)
Description copied from interface:TreeTraverseActioncalled for each leaf of an L list is encountered- Specified by:
handleLeafin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
fullPathToContainingList- - the itemlistIndex- - the ordered location of the item in the listlistItem- -
-
removeEntry
public boolean removeEntry(String fullPathToEntry, Map.Entry<String,Object> entry)
Description copied from interface:TreeTraverseActionthe last callback for each entry in anTreeTraverseActionmap. if this method returns true theTreeTraverserremoves the entry from the map. there is no further handling of the entry.- Specified by:
removeEntryin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Parameters:
fullPathToEntry- TODOentry- TODO- Returns:
- true if the entry and its subtree should be removed from the M tree
-
end
public void end()
Description copied from interface:TreeTraverseActioncalled after the traversal ends, and just before theTreeTraverseAction.start(M)method exits- Specified by:
endin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>
-
result
public Object result()
Description copied from interface:TreeTraverseActionholds the result of the traversal, as assigned by the action implementing this interface- Specified by:
resultin interfaceTreeTraverseAction<net.minidev.json.JSONObject,net.minidev.json.JSONArray>- Returns:
- result
-
discardPath
protected boolean discardPath(String pathToEntry, Map.Entry<String,Object> entry)
if the full path to the entry is not contained in any of the paths to retain - remove it from the object this step does not remove entries whose full path is contained in a path to retain but are not equal to an entry to retain- Parameters:
pathToEntry- TODOentry- TODO- Returns:
- TODO
-
foundAsPrefix
protected boolean foundAsPrefix(String path)
- Parameters:
path- TODO- Returns:
- TODO
-
-