@Override public String[] getAttributeNames() { return attributeMap.keys(); }
public static Map<String, String> toStringMap(BMap map) { Map<String, String> returnMap = new HashMap<>(); if (map != null) { for (Object aKey : map.keys()) { returnMap.put(aKey.toString(), map.get(aKey).stringValue()); } } return returnMap; }
private void setFields(Object target, BMap<String, BValue> fieldMap) { Objects.requireNonNull(target); Class<?> targetClass = target.getClass(); HashMap<String, Field> allFields = ObjectHelper.getAllFields(targetClass, 0); for (String fieldName : fieldMap.keys()) { if (fieldName.equals(ID_TAG)) { // it's a metadata entry. continue; } if (!allFields.containsKey(fieldName)) { throw new BallerinaException(String.format("Can not find field '%s' from JSON in %s class", fieldName, targetClass.getName())); } Field field = allFields.get(fieldName); BValue value = fieldMap.get(fieldName); Object object = deserialize(value, field.getType()); ObjectHelper.setField(target, field, object); } }
@SuppressWarnings("unchecked") private Object deserializeComplexKeyMap(BMap<String, BValue> complexKeyMap, BMap<String, BValue> payload, Map targetMap) { for (String key : payload.keys()) { if (key.equals(COMPLEX_KEY_MAP_TAG)) { // don't process this entry here, as this is the complex key-map entry continue; } BValue value = payload.get(key); BValue complexKey = complexKeyMap.get(key); Object ckObj = deserialize(complexKey, Object.class); targetMap.put(ckObj, deserialize(value, Object.class)); } return targetMap; }
/** * Returns the keys of a JSON as a {@link BValueArray}. * * @param json JSON to get the keys * @return Keys of the JSON as a {@link BValueArray} */ public static BValueArray getKeys(BValue json) { if (json == null || !isJSONObject(json)) { return new BValueArray(BTypes.typeString); } String[] keys = ((BMap<String, BValue>) json).keys(); return new BValueArray(keys); }
public void execute(Context ctx) { BMap<String, BValue> map = (BMap<String, BValue>) ctx.getRefArgument(0); BValueArray keyArray = new BValueArray(map.keys()); ctx.setReturnValues(keyArray); } }
for (String qname : attributes.keys()) { if (qname.startsWith("{") && qname.indexOf('}') > 0) { localName = qname.substring(qname.indexOf('}') + 1, qname.length());
@SuppressWarnings("unchecked") private Object deserializeMap(BMap<String, BValue> payload, Map target) { BValue complexKeyMap = payload.get(COMPLEX_KEY_MAP_TAG); if (complexKeyMap instanceof BMap) { return deserializeComplexKeyMap((BMap<String, BValue>) complexKeyMap, payload, target); } for (String key : payload.keys()) { if (key.equals(COMPLEX_KEY_MAP_TAG)) { // don't process this entry here, as this is the complex key-map entry continue; } BValue value = payload.get(key); Class<?> fieldType = Object.class; if (value instanceof BMap) { BMap<String, BValue> item = (BMap<String, BValue>) value; if (item.hasKey(TYPE_TAG)) { BValue val = item.get(TYPE_TAG); String typeName = val.stringValue(); fieldType = findClass(typeName); } } else if (value instanceof BBoolean) { fieldType = BBoolean.class; } target.put(key, deserialize(value, fieldType)); } return target; }
private static void processAnnotations(String pkgPath, ProgramFile programFile, AnnotatableNode annotatableNode) { final BMap bMap = getAnnotationVariable(pkgPath, programFile); if (!bMap.hasKey(annotatableNode.getAnnotationEntryKey())) { return; } final BValue map = bMap.get(annotatableNode.getAnnotationEntryKey()); if (map == null || map.getType().getTag() != BTypes.typeMap.getTag()) { return; } BMap<String, BValue> annotationMap = (BMap<String, BValue>) map; for (String key : annotationMap.keys()) { final BMap<String, BValue> annotationData = (BMap<String, BValue>) annotationMap.get(key); StructImpl struct = null; if (annotationData != null) { struct = new StructImpl(annotationData); } final String annotaionQName = key.split("\\$")[0]; final String[] qNameParts = annotaionQName.split(":"); final AnnotationImpl annotation = new AnnotationImpl(qNameParts[1], qNameParts[0], struct); annotatableNode.addAnnotation(annotaionQName, annotation); } } }
private void setDataSourceProperties(BMap<String, BRefType<?>> options, HikariConfig config) { for (String key : options.keys()) { BValue value = options.get(key); if (value instanceof BString) { config.addDataSourceProperty(key, value.stringValue()); } else if (value instanceof BInteger) { config.addDataSourceProperty(key, ((BInteger) value).intValue()); } else if (value instanceof BBoolean) { config.addDataSourceProperty(key, ((BBoolean) value).booleanValue()); } else if (value instanceof BFloat) { config.addDataSourceProperty(key, ((BFloat) value).floatValue()); } } }
@Override public void execute(Context context, CallableUnitCallback callback) { BMap<String, BValue> httpConnection = (BMap<String, BValue>) context.getRefArgument(0); WebSocketHandshaker webSocketHandshaker = (WebSocketHandshaker) httpConnection.getNativeData(WebSocketConstants.WEBSOCKET_MESSAGE); WebSocketConnectionManager connectionManager = (WebSocketConnectionManager) httpConnection .getNativeData(HttpConstants.NATIVE_DATA_WEBSOCKET_CONNECTION_MANAGER); if (webSocketHandshaker == null) { throw new BallerinaConnectorException("Not a WebSocket upgrade request. Cannot upgrade from HTTP to WS"); } if (connectionManager == null) { throw new BallerinaConnectorException("Cannot accept a WebSocket upgrade without WebSocket " + "connection manager"); } WebSocketService webSocketService = (WebSocketService) httpConnection.getNativeData( WebSocketConstants.WEBSOCKET_SERVICE); BMap<String, BString> headers = (BMap<String, BString>) context.getRefArgument(1); DefaultHttpHeaders httpHeaders = new DefaultHttpHeaders(); String[] keys = headers.keys(); for (String key : keys) { httpHeaders.add(key, headers.get(key)); } WebSocketUtil.handleHandshake(webSocketService, connectionManager, httpHeaders, webSocketHandshaker, context, callback); }