1 /* 2 * Portions of this software was developed by employees of the National Institute 3 * of Standards and Technology (NIST), an agency of the Federal Government and is 4 * being made available as a public service. Pursuant to title 17 United States 5 * Code Section 105, works of NIST employees are not subject to copyright 6 * protection in the United States. This software may be subject to foreign 7 * copyright. Permission in the United States and in foreign countries, to the 8 * extent that NIST may hold copyright, to use, copy, modify, create derivative 9 * works, and distribute this software and its documentation without fee is hereby 10 * granted on a non-exclusive basis, provided that this notice and disclaimer 11 * of warranty appears in all copies. 12 * 13 * THE SOFTWARE IS PROVIDED 'AS IS' WITHOUT ANY WARRANTY OF ANY KIND, EITHER 14 * EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY 15 * THAT THE SOFTWARE WILL CONFORM TO SPECIFICATIONS, ANY IMPLIED WARRANTIES OF 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND FREEDOM FROM 17 * INFRINGEMENT, AND ANY WARRANTY THAT THE DOCUMENTATION WILL CONFORM TO THE 18 * SOFTWARE, OR ANY WARRANTY THAT THE SOFTWARE WILL BE ERROR FREE. IN NO EVENT 19 * SHALL NIST BE LIABLE FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO, DIRECT, 20 * INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF, RESULTING FROM, 21 * OR IN ANY WAY CONNECTED WITH THIS SOFTWARE, WHETHER OR NOT BASED UPON WARRANTY, 22 * CONTRACT, TORT, OR OTHERWISE, WHETHER OR NOT INJURY WAS SUSTAINED BY PERSONS OR 23 * PROPERTY OR OTHERWISE, AND WHETHER OR NOT LOSS WAS SUSTAINED FROM, OR AROSE OUT 24 * OF THE RESULTS OF, OR USE OF, THE SOFTWARE OR SERVICES PROVIDED HEREUNDER. 25 */ 26 27 package gov.nist.secauto.metaschema.core.metapath.format; 28 29 // class JsonPathFormatter // implements IPathFormatter { 30 // 31 // public JsonPathFormatter() { 32 // } 33 // 34 // @NonNull 35 // protected String getEffectiveName(IDefinitionPathSegment segment) { 36 // return segment.getInstance().getJsonName(); 37 // } 38 // 39 // @SuppressWarnings("null") 40 // @Override 41 // public String format(IPathSegment segment) { 42 // return segment.getPathStream().map(pathSegment -> { 43 // return pathSegment.format(this); 44 // }).collect(Collectors.joining(".")); 45 // } 46 // 47 // @Override 48 // public @NonNull String formatPathSegment(@NonNull IDocumentPathSegment 49 // segment) { 50 // return "$"; 51 // } 52 // 53 // @Override 54 // public String formatPathSegment(IFlagPathSegment segment) { 55 // return getEffectiveName(segment); 56 // } 57 // 58 // @Override 59 // public String formatPathSegment(IFieldPathSegment segment) { 60 // IFieldInstance fieldInstance = segment.getInstance(); 61 // 62 // String retval; 63 // switch (fieldInstance.getJsonGroupAsBehavior()) { 64 // case KEYED: 65 // // use the identifier to index the map 66 // INodeItem node = segment.getNodeItem(); 67 // retval = "*"; 68 // if (node != null) { 69 // IFieldDefinition fieldDefinition = fieldInstance.getDefinition(); 70 // IFlagInstance jsonKeyFlagInstance = fieldDefinition.getJsonKeyFlagInstance(); 71 // if (jsonKeyFlagInstance != null) { 72 // String keyFlagName = jsonKeyFlagInstance.getEffectiveName(); 73 // IRequiredValueFlagNodeItem flagNode = node.getFlagByName(keyFlagName); 74 // if (flagNode != null) { 75 // retval = flagNode.toAtomicItem().asString(); 76 // } 77 // } 78 // } 79 // break; 80 // case LIST: 81 // break; 82 // case NONE: 83 // break; 84 // case SINGLETON_OR_LIST: 85 // break; 86 // default: 87 // break; 88 // } 89 // return formatModelPathSegment(segment); 90 // } 91 // 92 // @SuppressWarnings("null") 93 // @Override 94 // public String formatPathSegment(IAssemblyPathSegment segment) { 95 // String retval; 96 // if (segment instanceof IRootAssemblyPathSegment) { 97 // StringBuilder builder = new StringBuilder(); 98 // builder.append(getEffectiveName(segment)); 99 // retval = builder.toString(); 100 // } else { 101 // // TODO: does it make sense to use this for an intermediate that has no 102 // parent? 103 // retval = formatModelPathSegment(segment); 104 // } 105 // return retval; 106 // } 107 // 108 // @SuppressWarnings("null") 109 // @NonNull 110 // protected String formatModelPathSegment(IModelPositionalPathSegment segment) 111 // { 112 // StringBuilder builder = new StringBuilder(getEffectiveName(segment)); 113 // builder.append('['); 114 // builder.append(segment.getPosition()); 115 // builder.append(']'); 116 // return builder.toString(); 117 // } 118 // }