List of usage examples for com.fasterxml.jackson.databind.node ArrayNode get
public JsonNode get(String paramString)
From source file:net.sf.jasperreports.engine.json.expression.member.evaluation.ObjectKeyExpressionEvaluator.java
private JRJsonNode goDeeperIntoObjectNode(JRJsonNode jrJsonNode, boolean keepMissingNode) { ObjectNode dataNode = (ObjectNode) jrJsonNode.getDataNode(); ArrayNode container = getEvaluationContext().getObjectMapper().createArrayNode(); // A complex expression allows an object key to treated as a REGEX if (expression.isComplex()) { Iterator<String> fieldNamesIterator = dataNode.fieldNames(); while (fieldNamesIterator.hasNext()) { String fieldName = fieldNamesIterator.next(); Matcher fieldNameMatcher = fieldNamePattern.matcher(fieldName); if (fieldNameMatcher.matches()) { JsonNode deeperNode = dataNode.path(fieldName); // if the deeper node is object/value => filter and add it if (deeperNode.isObject() || deeperNode.isValueNode() || deeperNode.isArray()) { JRJsonNode child = jrJsonNode.createChild(deeperNode); if (applyFilter(child)) { container.add(deeperNode); }//from w w w .j a va 2s .c o m } } } } else { JsonNode deeperNode = dataNode.path(expression.getObjectKey()); // if the deeper node is object/value => filter and add it if (deeperNode.isObject() || deeperNode.isValueNode() || deeperNode.isArray()) { JRJsonNode child = jrJsonNode.createChild(deeperNode); if (applyFilter(child)) { container.add(deeperNode); } } } if (container.size() > 1) { return jrJsonNode.createChild(container); } else if (container.size() == 1) { return jrJsonNode.createChild(container.get(0)); } // Filtering expressions need the missing node to check for null else if (keepMissingNode) { return jrJsonNode.createChild(MissingNode.getInstance()); } return null; }
From source file:org.flowable.cmmn.editor.json.converter.CmmnJsonConverter.java
public CmmnModel convertToCmmnModel(JsonNode modelNode, Map<String, String> formKeyMap, Map<String, String> decisionTableKeyMap, Map<String, String> caseModelKeyMap, Map<String, String> processModelKeyMap) { CmmnModel cmmnModel = new CmmnModel(); CmmnModelIdHelper cmmnModelIdHelper = new CmmnModelIdHelper(); cmmnModel.setTargetNamespace("http://flowable.org/test"); Map<String, JsonNode> shapeMap = new HashMap<>(); Map<String, JsonNode> sourceRefMap = new HashMap<>(); Map<String, JsonNode> edgeMap = new HashMap<>(); Map<String, List<JsonNode>> sourceAndTargetMap = new HashMap<>(); readShapeInfo(modelNode, shapeMap, sourceRefMap); filterAllEdges(modelNode, edgeMap, sourceAndTargetMap, shapeMap, sourceRefMap); ArrayNode shapesArrayNode = (ArrayNode) modelNode.get(EDITOR_CHILD_SHAPES); if (shapesArrayNode == null || shapesArrayNode.size() == 0) { return cmmnModel; }/*from w w w . j a v a2s . c o m*/ Case caseModel = new Case(); cmmnModel.getCases().add(caseModel); caseModel.setId(CmmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_CASE_ID, modelNode)); caseModel.setName(CmmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_NAME, modelNode)); caseModel.setInitiatorVariableName( CmmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_CASE_INITIATOR_VARIABLE_NAME, modelNode)); if (StringUtils.isEmpty(caseModel.getInitiatorVariableName())) { caseModel.setInitiatorVariableName("initiator"); } String namespace = CmmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_CASE_NAMESPACE, modelNode); if (StringUtils.isNotEmpty(namespace)) { cmmnModel.setTargetNamespace(namespace); } caseModel.setDocumentation( CmmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_DOCUMENTATION, modelNode)); JsonNode planModelShape = shapesArrayNode.get(0); JsonNode planModelShapesArray = planModelShape.get(EDITOR_CHILD_SHAPES); Stage planModelStage = new Stage(); planModelStage.setId(CmmnJsonConverterUtil.getElementId(planModelShape)); planModelStage.setName(CmmnJsonConverterUtil.getPropertyValueAsString(PROPERTY_NAME, planModelShape)); planModelStage.setPlanModel(true); caseModel.setPlanModel(planModelStage); processJsonElements(planModelShapesArray, modelNode, planModelStage, shapeMap, formKeyMap, decisionTableKeyMap, caseModelKeyMap, processModelKeyMap, cmmnModel, cmmnModelIdHelper); List<String> planModelExitCriteriaRefs = new ArrayList<>(); for (JsonNode shapeNode : shapesArrayNode) { // associations are now all on root level if (STENCIL_ASSOCIATION.equalsIgnoreCase(CmmnJsonConverterUtil.getStencilId(shapeNode))) { AssociationJsonConverter associationConverter = new AssociationJsonConverter(); Association association = associationConverter.convertJsonToElement(shapeNode, modelNode, this, planModelStage, shapeMap, cmmnModel, cmmnModelIdHelper); cmmnModel.addAssociation(association); // exit criteria for the plan model are on the root level } else if (STENCIL_EXIT_CRITERION.equalsIgnoreCase(CmmnJsonConverterUtil.getStencilId(shapeNode))) { JsonNode resourceNode = shapeNode.get(EDITOR_SHAPE_ID); if (resourceNode != null) { planModelExitCriteriaRefs.add(resourceNode.asText()); CriterionJsonConverter criterionJsonConverter = new CriterionJsonConverter(); criterionJsonConverter.convertJsonToElement(shapeNode, modelNode, this, planModelStage, shapeMap, cmmnModel, cmmnModelIdHelper); } } } readShapeDI(modelNode, 0, 0, cmmnModel); readEdgeDI(edgeMap, sourceAndTargetMap, cmmnModel); // post handling of process elements Map<String, List<Association>> associationMap = postProcessAssociations(cmmnModel); postProcessElements(planModelStage, planModelStage.getPlanItems(), edgeMap, associationMap, cmmnModel, cmmnModelIdHelper); // Create sentries for exit criteria on plan model createSentryParts(planModelExitCriteriaRefs, planModelStage, associationMap, cmmnModel, cmmnModelIdHelper, null, planModelStage); return cmmnModel; }
From source file:org.wrml.runtime.schema.generator.SchemaGenerator.java
private Value generateValue(final JsonSchema jsonSchema, final JsonSchema.Property property) throws SchemaGeneratorException { if (property == null) { throw new SchemaGeneratorException("Failed to generate a Value", null, this); }/*from w w w. j a v a2 s . co m*/ final URI schemaUri = jsonSchema.getId(); if (schemaUri == null) { throw new SchemaGeneratorException("Failed to generate a Value", null, this); } final JsonType jsonType = property.getJsonType(); if (jsonType == null) { throw new SchemaGeneratorException("Failed to generate a Value", null, this); } final Context context = getContext(); final SchemaLoader schemaLoader = context.getSchemaLoader(); final ValueType valueType = getValueType(jsonType); Value value = null; switch (valueType) { case Boolean: { final BooleanValue booleanValue = context.newModel(BooleanValue.class); final JsonNode defaultNode = property.getValueNode(PropertyType.Default); if (defaultNode != null) { booleanValue.setDefault(defaultNode.asBoolean()); } value = booleanValue; break; } case Date: { break; } case Double: { final DoubleValue doubleValue = context.newModel(DoubleValue.class); final JsonNode defaultNode = property.getValueNode(PropertyType.Default); if (defaultNode != null) { doubleValue.setDefault(defaultNode.asDouble()); } final JsonNode maximumNode = property.getValueNode(PropertyType.Maximum); if (maximumNode != null) { doubleValue.setMaximum(maximumNode.asDouble()); } final JsonNode minimumNode = property.getValueNode(PropertyType.Minimum); if (minimumNode != null) { doubleValue.setMinimum(minimumNode.asDouble()); } value = doubleValue; break; } case Integer: { final IntegerValue integerValue = context.newModel(IntegerValue.class); final JsonNode defaultNode = property.getValueNode(PropertyType.Default); if (defaultNode != null) { integerValue.setDefault(defaultNode.asInt()); } final JsonNode divisibleByNode = property.getValueNode(PropertyType.DivisibleBy); if (divisibleByNode != null) { integerValue.setDivisibleBy(divisibleByNode.asInt()); } final JsonNode multipleOfNode = property.getValueNode(PropertyType.MultipleOf); if (multipleOfNode != null) { integerValue.setDivisibleBy(multipleOfNode.asInt()); } final JsonNode maximumNode = property.getValueNode(PropertyType.Maximum); if (maximumNode != null) { integerValue.setMaximum(maximumNode.asInt()); } final JsonNode minimumNode = property.getValueNode(PropertyType.Minimum); if (minimumNode != null) { integerValue.setMinimum(minimumNode.asInt()); } value = integerValue; break; } case Link: // NOTE: Falling through the Link switch case on purpose to treat same as Model // TODO: Revisit this design. case Model: { final ModelValue modelValue = context.newModel(ModelValue.class); final JsonSchemaLoader jsonSchemaLoader = schemaLoader.getJsonSchemaLoader(); final JsonSchema modelJsonSchema; final URI baseSchemaUri; final JsonNode schemaIdNode = property.getValueNode(PropertyType.Id); if (schemaIdNode != null) { baseSchemaUri = schemaLoader.getDocumentSchemaUri(); final URI modelSchemaUri = property.getValue(PropertyType.Id); if (modelSchemaUri != schemaUri) { try { modelJsonSchema = jsonSchemaLoader.load(modelSchemaUri); } catch (final IOException e) { throw new SchemaGeneratorException(e.getMessage(), e, this); } } else { modelJsonSchema = jsonSchema; } } else { baseSchemaUri = schemaLoader.getEmbeddedSchemaUri(); String modelSchemaUriString = schemaUri.toString(); if (modelSchemaUriString.endsWith(".json")) { modelSchemaUriString = modelSchemaUriString.substring(0, modelSchemaUriString.length() - ".json".length()); } int innerClassNumber = 0; if (_InnerSchemaCountMap.containsKey(schemaUri)) { innerClassNumber = _InnerSchemaCountMap.get(schemaUri); } innerClassNumber++; _InnerSchemaCountMap.put(schemaUri, innerClassNumber); final String annonymousInnerSchemaName = ANNONYMOUS_INNER_SCHEMA_PREFIX + String.valueOf(innerClassNumber); modelSchemaUriString = modelSchemaUriString.concat(annonymousInnerSchemaName); final ObjectNode propertyNode = property.getPropertyNode(); propertyNode.put(PropertyType.Id.getName(), modelSchemaUriString); final URI modelSchemaUri = URI.create(modelSchemaUriString); modelJsonSchema = jsonSchemaLoader.load(propertyNode, modelSchemaUri); } if (modelJsonSchema != jsonSchema) { schemaLoader.load(modelJsonSchema, baseSchemaUri); } modelValue.setModelSchemaUri(modelJsonSchema.getId()); value = modelValue; break; } case List: { final ListValue listValue = context.newModel(ListValue.class); final JsonNode uniqueItemsNode = property.getValueNode(PropertyType.UniqueItems); if (uniqueItemsNode != null) { listValue.setElementUniquenessConstrained(uniqueItemsNode.asBoolean()); } final JsonNode maxItemsNode = property.getValueNode(PropertyType.MaxItems); if (maxItemsNode != null) { listValue.setMaximumSize(maxItemsNode.asInt()); } final JsonNode minItemsNode = property.getValueNode(PropertyType.MinItems); if (minItemsNode != null) { listValue.setMinimumSize(minItemsNode.asInt()); } final JsonNode itemsNode = property.getValueNode(PropertyType.Items); ObjectNode itemNode = null; if (itemsNode instanceof ObjectNode) { itemNode = (ObjectNode) itemsNode; } else if (itemsNode instanceof ArrayNode) { final ArrayNode itemsArrayNode = (ArrayNode) itemsNode; if (itemsArrayNode.has(0)) { itemNode = (ObjectNode) itemsArrayNode.get(0); } } if (itemNode != null) { Property itemsProperty; try { itemsProperty = new Property(jsonSchema, PropertyType.Items.getName(), itemNode); final Value elementValue = generateValue(jsonSchema, itemsProperty); final Slot elementSlot = context.newModel(Slot.class); elementSlot.setName("E"); elementSlot.setValue(elementValue); listValue.setElementSlot(elementSlot); } catch (final IOException e) { throw new SchemaGeneratorException(e.getMessage(), e, this); } } value = listValue; break; } case Long: { final LongValue longValue = context.newModel(LongValue.class); final JsonNode defaultNode = property.getValueNode(PropertyType.Default); if (defaultNode != null) { longValue.setDefault(defaultNode.asLong()); } final JsonNode divisibleByNode = property.getValueNode(PropertyType.DivisibleBy); if (divisibleByNode != null) { longValue.setDivisibleBy(divisibleByNode.asLong()); } final JsonNode multipleOfNode = property.getValueNode(PropertyType.MultipleOf); if (multipleOfNode != null) { longValue.setDivisibleBy(multipleOfNode.asLong()); } final JsonNode maximumNode = property.getValueNode(PropertyType.Maximum); if (maximumNode != null) { longValue.setMaximum(maximumNode.asLong()); } final JsonNode minimumNode = property.getValueNode(PropertyType.Minimum); if (minimumNode != null) { longValue.setMinimum(minimumNode.asLong()); } value = longValue; break; } case Native: { break; } case SingleSelect: { final SingleSelectValue singleSelectValue = context.newModel(SingleSelectValue.class); value = singleSelectValue; break; } case Text: { final TextValue textValue = context.newModel(TextValue.class); final JsonNode defaultNode = property.getValueNode(PropertyType.Default); if (defaultNode != null) { textValue.setDefault(defaultNode.asText()); } final JsonNode maxLengthNode = property.getValueNode(PropertyType.MaxLength); if (maxLengthNode != null) { textValue.setMaximumLength(maxLengthNode.asInt()); } final JsonNode minLengthNode = property.getValueNode(PropertyType.MinLength); if (minLengthNode != null) { textValue.setMinimumLength(minLengthNode.asInt()); } final JsonNode formatNode = property.getValueNode(PropertyType.Format); if (formatNode != null) { final String formatKeyword = formatNode.asText(); final JsonStringFormat jsonStringFormat = JsonStringFormat.forKeyword(formatKeyword); if (jsonStringFormat != null) { final Class<?> formatJavaType = jsonStringFormat.getJavaType(); final SyntaxLoader syntaxLoader = context.getSyntaxLoader(); final URI syntaxUri = syntaxLoader.getSyntaxUri(formatJavaType); textValue.setSyntaxUri(syntaxUri); } } textValue.getDisallowedValues(); value = textValue; break; } default: { break; } } if (value instanceof MaybeRequired) { final JsonNode requiredNode = property.getValueNode(PropertyType.Required); if (requiredNode != null) { ((MaybeRequired) value).setRequired(requiredNode.asBoolean()); } } if (value instanceof NumericValue) { final NumericValue numericValue = (NumericValue) value; final JsonNode exclusiveMaximumNode = property.getValueNode(PropertyType.ExclusiveMaximum); if (exclusiveMaximumNode != null) { numericValue.setExclusiveMaximum(exclusiveMaximumNode.asBoolean()); } final JsonNode exclusiveMinimumNode = property.getValueNode(PropertyType.ExclusiveMinimum); if (exclusiveMinimumNode != null) { numericValue.setExclusiveMinimum(exclusiveMinimumNode.asBoolean()); } } return value; }
From source file:com.google.api.server.spi.tools.AnnotationApiConfigGeneratorTest.java
private void verifyEndpoint1(Class<? extends Endpoint1> serviceClass, JsonNode root) { verifyApi(root, "thirdParty.api", "https://myapp.appspot.com/_ah/api", "myapi", "v1", "API for testing", "https://myapp.appspot.com/_ah/spi", true, true, new String[] { "CU" }); verifyFrontendLimits(root.path("frontendLimits"), 1, 2, 3); ArrayNode rules = (ArrayNode) root.path("frontendLimits").path("rules"); verifyFrontendLimitRule(rules.get(0), "match0", 1, 2, 3, "analyticsId0"); verifyFrontendLimitRule(rules.get(1), "match10", 11, 12, 13, "analyticsId10"); verifyCacheControl(root.path("cacheControl"), ApiCacheControl.Type.PUBLIC, 1); JsonNode methods = root.path("methods"); String serviceClassName = serviceClass.getName(); // myapi.foos.listFoos JsonNode methodListFoos = methods.path("myapi.foos.list"); verifyMethod(methodListFoos, "foos", HttpMethod.GET, serviceClassName + ".listFoos", "autoTemplate(backendResponse)"); verifyMethodRequest(methodListFoos.path("request"), "empty", 0); verifyStrings(objectMapper.convertValue(methodListFoos.path("scopes"), String[].class), new String[] { "s0", "s1 s2" }); verifyStrings(objectMapper.convertValue(methodListFoos.path("audiences"), String[].class), new String[] { "a0", "a1" }); verifyStrings(objectMapper.convertValue(methodListFoos.path("clientIds"), String[].class), new String[] { "c0", "c1" }); // myapi.foos.get JsonNode methodGetFoo = methods.path("myapi.foos.get"); verifyMethod(methodGetFoo, "foos/{id}", HttpMethod.GET, serviceClassName + ".getFoo", "autoTemplate(backendResponse)"); verifyMethodRequest(methodGetFoo.path("request"), "empty", 1); verifyMethodRequestParameter(methodGetFoo.path("request"), "id", "string", true, false); verifyStrings(objectMapper.convertValue(methodGetFoo.path("scopes"), String[].class), new String[] { "ss0", "ss1 ss2" }); verifyStrings(objectMapper.convertValue(methodGetFoo.path("audiences"), String[].class), new String[] { "aa0", "aa1" }); verifyStrings(objectMapper.convertValue(methodGetFoo.path("clientIds"), String[].class), new String[] { "cc0", "cc1" }); // myapi.foos.insert JsonNode methodInsertFoo = methods.path("myapi.foos.insert"); verifyMethod(methodInsertFoo, "foos", HttpMethod.POST, serviceClassName + ".insertFoo", "autoTemplate(backendResponse)"); verifyMethodRequest(methodInsertFoo.path("request"), "autoTemplate(backendRequest)", 0); // myapi.foos.update JsonNode methodUpdateFoo = methods.path("myapi.foos.update"); verifyMethod(methodUpdateFoo, "foos/{id}", HttpMethod.PUT, serviceClassName + ".updateFoo", "autoTemplate(backendResponse)"); verifyMethodRequest(methodUpdateFoo.path("request"), "autoTemplate(backendRequest)", 1); verifyMethodRequestParameter(methodUpdateFoo.path("request"), "id", "string", true, false); // myapi.foos.remove JsonNode methodRemoveFoo = methods.path("myapi.foos.remove"); verifyMethod(methodRemoveFoo, "foos/{id}", HttpMethod.DELETE, serviceClassName + ".removeFoo", "empty"); verifyMethodRequest(methodRemoveFoo.path("request"), "empty", 1); verifyMethodRequestParameter(methodRemoveFoo.path("request"), "id", "string", true, false); // myapi.foos.execute0 JsonNode methodExecute0 = methods.path("myapi.foos.execute0"); verifyMethod(methodExecute0, "execute0", HttpMethod.POST, serviceClassName + ".execute0", "autoTemplate(backendResponse)"); verifyMethodRequest(methodExecute0.path("request"), "empty", 9); JsonNode methodExecute0Request = methodExecute0.path("request"); verifyMethodRequestParameter(methodExecute0Request, "id", "string", true, false); verifyMethodRequestParameter(methodExecute0Request, "i0", "int32", true, false); verifyMethodRequestParameter(methodExecute0Request, "i1", "int32", false, false); verifyMethodRequestParameter(methodExecute0Request, "long0", "int64", true, false); verifyMethodRequestParameter(methodExecute0Request, "long1", "int64", false, false); verifyMethodRequestParameter(methodExecute0Request, "b0", "boolean", true, false); verifyMethodRequestParameter(methodExecute0Request, "b1", "boolean", false, false); verifyMethodRequestParameter(methodExecute0Request, "f", "float", true, false); verifyMethodRequestParameter(methodExecute0Request, "d", "double", false, false); // myapi.foos.execute2 JsonNode methodExecute2 = methods.path("myapi.foos.execute2"); verifyMethod(methodExecute2, "execute2/{serialized}", HttpMethod.POST, serviceClassName + ".execute2", "empty"); JsonNode methodExecute2Request = methodExecute2.path("request"); verifyMethodRequestParameter(methodExecute2Request, "serialized", "string", true, false); }
From source file:com.google.api.server.spi.tools.AnnotationApiConfigGeneratorTest.java
private void verifySubclassedOverridingEndpoint(Class<? extends SubclassedOverridingEndpoint> serviceClass, JsonNode root) {// w ww . j av a2 s . co m verifyApi(root, "thirdParty.api", "https://myapp.appspot.com/_ah/api", "myapi", "v2", "overridden description", "https://myapp.appspot.com/_ah/spi", true, false); verifyFrontendLimits(root.path("frontendLimits"), 1, 4, 3); ArrayNode rules = (ArrayNode) root.path("frontendLimits").path("rules"); verifyFrontendLimitRule(rules.get(0), "match0", 1, 2, 3, "analyticsId0"); verifyFrontendLimitRule(rules.get(1), "match10", 11, 12, 13, "analyticsId10"); verifyCacheControl(root.path("cacheControl"), ApiCacheControl.Type.PUBLIC, 2); JsonNode methods = root.path("methods"); String serviceClassName = serviceClass.getName(); String servicePrefix = "myapi." + serviceClass.getSimpleName(); // myapi.foos.listFoos JsonNode methodListFoos = methods.path("myapi.foos.list"); verifyMethod(methodListFoos, "foos", HttpMethod.GET, serviceClassName + ".listFoos", "autoTemplate(backendResponse)"); verifyMethodRequest(methodListFoos.path("request"), "empty", 0); verifyStrings(objectMapper.convertValue(methodListFoos.path("scopes"), String[].class), new String[] { "s0", "s1 s2" }); verifyStrings(objectMapper.convertValue(methodListFoos.path("audiences"), String[].class), new String[] { "a0", "a1" }); verifyStrings(objectMapper.convertValue(methodListFoos.path("clientIds"), String[].class), new String[] { "c0", "c1" }); // myapi.foos.get assertTrue(methods.path(servicePrefix + ".foos.get").isMissingNode()); // myapi.foos.get2 JsonNode methodGetFoo = methods.path("myapi.foos.get2"); verifyMethod(methodGetFoo, "foos/{id}", HttpMethod.GET, serviceClassName + ".getFoo", "autoTemplate(backendResponse)"); verifyMethodRequest(methodGetFoo.path("request"), "empty", 1); verifyMethodRequestParameter(methodGetFoo.path("request"), "id", "string", true, false); verifyStrings(objectMapper.convertValue(methodGetFoo.path("scopes"), String[].class), new String[] { "ss0a", "ss1a" }); verifyStrings(objectMapper.convertValue(methodGetFoo.path("audiences"), String[].class), new String[] { "aa0a", "aa1a" }); verifyStrings(objectMapper.convertValue(methodGetFoo.path("clientIds"), String[].class), new String[] { "cc0a", "cc1a" }); // myapi.foos.insert JsonNode methodInsertFoo = methods.path("myapi.foos.insert"); verifyMethod(methodInsertFoo, "foos", HttpMethod.POST, serviceClassName + ".insertFoo", "autoTemplate(backendResponse)"); verifyMethodRequest(methodInsertFoo.path("request"), "autoTemplate(backendRequest)", 0); // myapi.foos.update JsonNode methodUpdateFoo = methods.path("myapi.foos.update"); verifyMethod(methodUpdateFoo, "foos/{id}", HttpMethod.PUT, serviceClassName + ".updateFoo", "autoTemplate(backendResponse)"); verifyMethodRequest(methodUpdateFoo.path("request"), "autoTemplate(backendRequest)", 1); verifyMethodRequestParameter(methodUpdateFoo.path("request"), "id", "string", true, false); // myapi.foos.remove JsonNode methodRemoveFoo = methods.path("myapi.foos.remove"); verifyMethod(methodRemoveFoo, "foos/{id}", HttpMethod.DELETE, serviceClassName + ".removeFoo", "empty"); verifyMethodRequest(methodRemoveFoo.path("request"), "empty", 1); verifyMethodRequestParameter(methodRemoveFoo.path("request"), "id", "string", true, false); // myapi.foos.execute0 JsonNode methodExecute0 = methods.path("myapi.foos.execute0"); verifyMethod(methodExecute0, "execute0", HttpMethod.POST, serviceClassName + ".execute0", "autoTemplate(backendResponse)"); verifyMethodRequest(methodExecute0.path("request"), "empty", 9); JsonNode methodExecute0Request = methodExecute0.path("request"); verifyMethodRequestParameter(methodExecute0Request, "id", "string", true, false); verifyMethodRequestParameter(methodExecute0Request, "i0", "int32", true, false); verifyMethodRequestParameter(methodExecute0Request, "i1", "int32", false, false); verifyMethodRequestParameter(methodExecute0Request, "long0", "int64", true, false); verifyMethodRequestParameter(methodExecute0Request, "long1", "int64", false, false); verifyMethodRequestParameter(methodExecute0Request, "b0", "boolean", true, false); verifyMethodRequestParameter(methodExecute0Request, "b1", "boolean", false, false); verifyMethodRequestParameter(methodExecute0Request, "f", "float", true, false); verifyMethodRequestParameter(methodExecute0Request, "d", "double", false, false); // myapi.foos.execute2 JsonNode methodExecute2 = methods.path("myapi.foos.execute2"); verifyMethod(methodExecute2, "execute2/{serialized}", HttpMethod.POST, serviceClassName + ".execute2", "empty"); JsonNode methodExecute2Request = methodExecute2.path("request"); verifyMethodRequestParameter(methodExecute2Request, "serialized", "int32", true, false); }
From source file:com.google.api.server.spi.tools.AnnotationApiConfigGeneratorTest.java
private void verifyApi(JsonNode root, String superConfig, String apiRoot, String apiName, String apiVersion, String description, String backendRoot, boolean allowCookieAuth, boolean defaultVersion, String[] blockedRegions) { assertEquals(superConfig, root.path("extends").asText()); assertEquals(false, root.path("abstract").asBoolean()); assertEquals(defaultVersion, root.path("defaultVersion").asBoolean()); assertEquals(apiRoot, root.path("root").asText()); assertEquals(apiName, root.path("name").asText()); assertEquals(apiVersion, root.path("version").asText()); assertEquals(description, root.path("description").asText()); JsonNode adapter = root.path("adapter"); assertEquals(backendRoot, adapter.path("bns").asText()); JsonNode auth = root.path("auth"); assertEquals(allowCookieAuth, auth.path("allowCookieAuth").asBoolean()); if (blockedRegions != null) { ArrayNode blockedRegionsNode = (ArrayNode) auth.path("blockedRegions"); for (int i = 0; i < blockedRegions.length; i++) { assertEquals(blockedRegions[i], blockedRegionsNode.get(i).asText()); }/*from w w w. j a v a 2 s . c om*/ } }
From source file:io.swagger.v3.parser.util.OpenAPIDeserializer.java
public String inferTypeFromArray(ArrayNode an) { if (an.size() == 0) { return "string"; }// w w w. ja va 2s .co m String type = null; for (int i = 0; i < an.size(); i++) { JsonNode element = an.get(0); if (element.isBoolean()) { if (type == null) { type = "boolean"; } else if (!"boolean".equals(type)) { type = "string"; } } else if (element.isNumber()) { if (type == null) { type = "number"; } else if (!"number".equals(type)) { type = "string"; } } else { type = "string"; } } return type; }
From source file:com.googlecode.jsonrpc4j.JsonRpcServer.java
/** * Finds the {@link Method} from the supplied {@link Set} that * best matches the rest of the arguments supplied and returns * it as a {@link MethodAndArgs} class.//from w w w . j av a 2 s .co m * * @param methods the {@link Method}s * @param paramCount the number of expect parameters * @param paramNodes the parameters for matching types * @return the {@link MethodAndArgs} */ private MethodAndArgs findBestMethodUsingParamIndexes(Set<Method> methods, int paramCount, ArrayNode paramNodes) { // get param count int numParams = paramNodes != null && !paramNodes.isNull() ? paramNodes.size() : 0; // determine param count int bestParamNumDiff = Integer.MAX_VALUE; Set<Method> matchedMethods = new HashSet<Method>(); // check every method for (Method method : methods) { // get parameter types Class<?>[] paramTypes = method.getParameterTypes(); int paramNumDiff = paramTypes.length - paramCount; // we've already found a better match if (Math.abs(paramNumDiff) > Math.abs(bestParamNumDiff)) { continue; // we don't allow extra params } else if (!allowExtraParams && paramNumDiff < 0 || !allowLessParams && paramNumDiff > 0) { continue; // check the parameters } else { if (Math.abs(paramNumDiff) < Math.abs(bestParamNumDiff)) { matchedMethods.clear(); } matchedMethods.add(method); bestParamNumDiff = paramNumDiff; continue; } } // bail early if (matchedMethods.isEmpty()) { return null; } // now narrow it down to the best method // based on argument types Method bestMethod = null; if (matchedMethods.size() == 1 || numParams == 0) { bestMethod = matchedMethods.iterator().next(); } else { // check the matching methods for // matching parameter types int mostMatches = -1; for (Method method : matchedMethods) { List<Class<?>> parameterTypes = getParameterTypes(method); int numMatches = 0; for (int i = 0; i < parameterTypes.size() && i < numParams; i++) { if (isMatchingType(paramNodes.get(i), parameterTypes.get(i))) { numMatches++; } } if (numMatches > mostMatches) { mostMatches = numMatches; bestMethod = method; } } } // create return MethodAndArgs ret = new MethodAndArgs(); ret.method = bestMethod; // now fill arguments int numParameters = bestMethod.getParameterTypes().length; for (int i = 0; i < numParameters; i++) { if (i < numParams) { ret.arguments.add(paramNodes.get(i)); } else { ret.arguments.add(NullNode.getInstance()); } } // return the method return ret; }