public static List<Path> path() { final String[] paths = StringScanner.splitByDelimiters(System.getenv().get("PATH"), ":;"); return Lists.mapBy(paths, IO.convertToPathFunction); }
private RequestMetaData doGet(final String path) { RequestMetaData requestMetaData = metaDataMap.get(path); if (requestMetaData == null) { Map.Entry<String, NavigableMap<Integer, RequestMetaData>> uriParamNumMapEntry = treeMap.lowerEntry(path); if (uriParamNumMapEntry == null) { return null; } final String requestURI = Str.isEmpty(rootURI) ? path : StringScanner.substringAfter(path, rootURI); int count = Str.split(requestURI, '/').length - 1; NavigableMap<Integer, RequestMetaData> uriParamMap = uriParamNumMapEntry.getValue(); requestMetaData = uriParamMap.get(count); if (requestMetaData != null && path.startsWith(requestMetaData.getPath())) { return requestMetaData; } else { return null; } } else { return requestMetaData; } }
/** * This is one is forgiving of null paths. * This works with getters first, i.e., properties. * * @param object object * @param property property * @return value */ public static Object getProp( Object object, final String property ) { if ( object == null ) { return null; } if ( isDigits( property ) ) { /* We can index numbers and names. */ object = idx(object, StringScanner.parseInt(property)); } Class<?> cls = object.getClass(); /** Tries the getters first. */ Map<String, FieldAccess> fields = Reflection.getPropertyFieldAccessors( cls ); if ( !fields.containsKey( property ) ) { fields = Reflection.getAllAccessorFields( cls ); } if ( !fields.containsKey( property ) ) { return null; } else { return fields.get( property ).getValue(object); } }
public static float getPropertyFloat( final Object root, final String... properties ) { final String lastProperty = properties[ properties.length - 1 ]; if ( isDigits( lastProperty ) ) { return Conversions.toFloat(getPropertyValue(root, properties)); } Object object = baseForGetProperty( root, properties ); Map<String, FieldAccess> fields = getFieldsFromObject( object ); FieldAccess field = fields.get( lastProperty ); if ( field.type() == Typ.flt ) { return field.getFloat( object ); } else { return Conversions.toFloat( field.getValue( object ) ); } }
private void addEndPoint(final ContextMeta context, final ServiceMeta service, final ServiceMethodMeta method, final RequestMeta requestMeta, final String servicePath) { if (!requestMeta.getRequestMethods().contains(httpRequestMethod)) { return; } if (requestMeta.getCallType() == CallType.ADDRESS) { final String requestPath = requestMeta.getRequestURI(); final String path = Str.join('/', context.getRootURI(), servicePath, requestPath).replaceAll("//*", "/"); addRequestEndPointUsingPath(context, service, method, requestMeta, path.toLowerCase(), requestMeta.getRequestURI(), servicePath); } else if (requestMeta.getCallType() == CallType.ADDRESS_WITH_PATH_PARAMS) { final String requestPath = StringScanner.substringBefore(requestMeta.getRequestURI(), "{"); final String path = Str.join('/', context.getRootURI(), servicePath, requestPath).replaceAll("//*", "/"); addRequestEndPointUsingPath(context, service, method, requestMeta, path.toLowerCase(), requestMeta.getRequestURI(), servicePath); } }
public static String substringBefore(String string, String before) { int index = StringScanner.findString(string, before); if (index==-1) { return ""; } else { return Str.slcEnd(string, index); } } }
public static int toInt(Object obj, int defaultValue) { if (obj.getClass() == int.class) { return int.class.cast(obj); } if (obj instanceof Number) { return ((Number) obj).intValue(); } else if (obj instanceof Boolean || obj.getClass() == Boolean.class) { boolean value = toBoolean(obj); return value ? 1 : 0; } else if (obj instanceof CharSequence) { try { return StringScanner.parseInt(Str.toString(obj)); } catch (Exception ex) { return defaultValue; } } return defaultValue; }
/** * This is one is forgiving of null paths. * This works with getters first, i.e., properties. * * @param object object * @param property property * @return value */ public static Object getProp( Object object, final String property ) { if ( object == null ) { return null; } if ( isDigits( property ) ) { /* We can index numbers and names. */ object = idx(object, StringScanner.parseInt(property)); } Class<?> cls = object.getClass(); /** Tries the getters first. */ Map<String, FieldAccess> fields = Reflection.getPropertyFieldAccessors( cls ); if ( !fields.containsKey( property ) ) { fields = Reflection.getAllAccessorFields( cls ); } if ( !fields.containsKey( property ) ) { return null; } else { return fields.get( property ).getValue(object); } }
public static int getPropertyInt( final Object root, final String... properties ) { final String lastProperty = properties[ properties.length - 1 ]; if ( isDigits( lastProperty ) ) { return Conversions.toInt(getPropertyValue(root, properties)); } Object object = baseForGetProperty( root, properties ); Map<String, FieldAccess> fields = getFieldsFromObject(object); FieldAccess field = fields.get(lastProperty); if ( field.type() == Typ.intgr ) { return field.getInt( object ); } else { return Conversions.toInt(field.getValue(object)); } }
private void addEndPoint(final ContextMeta context, final ServiceMeta service, final ServiceMethodMeta method, final RequestMeta requestMeta, final String servicePath) { if (!requestMeta.getRequestMethods().contains(httpRequestMethod)) { return; } if (requestMeta.getCallType() == CallType.ADDRESS) { final String requestPath = requestMeta.getRequestURI(); final String path = Str.join('/', context.getRootURI(), servicePath, requestPath).replaceAll("//*", "/"); addRequestEndPointUsingPath(context, service, method, requestMeta, path.toLowerCase(), requestMeta.getRequestURI(), servicePath); } else if (requestMeta.getCallType() == CallType.ADDRESS_WITH_PATH_PARAMS) { final String requestPath = StringScanner.substringBefore(requestMeta.getRequestURI(), "{"); final String path = Str.join('/', context.getRootURI(), servicePath, requestPath).replaceAll("//*", "/"); addRequestEndPointUsingPath(context, service, method, requestMeta, path.toLowerCase(), requestMeta.getRequestURI(), servicePath); } }
public static String substringAfter(String string, String after) { int index = StringScanner.findString(string, after); if (index==-1) { return ""; } else { return Str.slc(string, index+after.length()); } }
public static int toInt(Object obj, int defaultValue) { if (obj.getClass() == int.class) { return int.class.cast(obj); } if (obj instanceof Number) { return ((Number) obj).intValue(); } else if (obj instanceof Boolean || obj.getClass() == Boolean.class) { boolean value = toBoolean(obj); return value ? 1 : 0; } else if (obj instanceof CharSequence) { try { return StringScanner.parseInt(Str.toString(obj)); } catch (Exception ex) { return defaultValue; } } return defaultValue; }
/** * Handles WebSocket messages and parses them into responses. * This does not handle batching or rather un-batching which we need for performance * we do handle batching in the parser/encoder. * * @param webSocketText websocket text */ private void handleWebSocketReplyMessage(final String webSocketText) { final List<Message<Object>> messages = QBit.factory().createProtocolParser().parse("", webSocketText); //noinspection Convert2streamapi for (Message<Object> message : messages) { if (message instanceof Response) { @SuppressWarnings("unchecked") final Response<Object> response = ((Response) message); final String[] split = StringScanner.split(response.returnAddress(), (char) PROTOCOL_ARG_SEPARATOR); final HandlerKey key = split.length == 2 ? new HandlerKey(split[1], response.id()) : new HandlerKey(split[0], response.id()); final Callback<Object> handler = handlers.get(key); if (handler != null) { handleAsyncCallback(response, handler); handlers.remove(key); } // else there was no handler, it was a one way method. } } }
/** * Calculate a sum of a property from a list. * @param inputList input list * @param propertyPath to item we want to sum * @return sum */ public static long sum( Collection<?> inputList, String propertyPath ) { if (inputList.size() == 0 ) { return 0; } long sum = 0l; if (propertyPath.contains(".") || propertyPath.contains("[")) { String[] properties = StringScanner.splitByDelimiters(propertyPath, ".[]"); for (Object o : inputList) { sum+=BeanUtils.getPropertyInt(o, properties); } } else { Map<String, FieldAccess> fields = BeanUtils.getFieldsFromObject(inputList.iterator().next()); FieldAccess fieldAccess = fields.get(propertyPath); for (Object o : inputList) { sum += fieldAccess.getInt(o); } } return sum; }
public static float getPropertyFloat( final Object root, final String... properties ) { final String lastProperty = properties[ properties.length - 1 ]; if ( isDigits( lastProperty ) ) { return Conversions.toFloat(getPropertyValue(root, properties)); } Object object = baseForGetProperty( root, properties ); Map<String, FieldAccess> fields = getFieldsFromObject( object ); FieldAccess field = fields.get( lastProperty ); if ( field.type() == Typ.flt ) { return field.getFloat( object ); } else { return Conversions.toFloat( field.getValue( object ) ); } }
private RequestMetaData doGet(final String path) { RequestMetaData requestMetaData = metaDataMap.get(path); if (requestMetaData == null) { Map.Entry<String, NavigableMap<Integer, RequestMetaData>> uriParamNumMapEntry = treeMap.lowerEntry(path); if (uriParamNumMapEntry == null) { return null; } final String requestURI = Str.isEmpty(rootURI) ? path : StringScanner.substringAfter(path, rootURI); int count = Str.split(requestURI, '/').length -1; NavigableMap<Integer, RequestMetaData> uriParamMap = uriParamNumMapEntry.getValue(); requestMetaData = uriParamMap.get(count); if (requestMetaData!=null && path.startsWith(requestMetaData.getPath())) { return requestMetaData; } else { return null; } } else { return requestMetaData; } }
private void addEndPoint(final ContextMeta context, final ServiceMeta service, final ServiceMethodMeta method, final RequestMeta requestMeta, final String servicePath) { if (!requestMeta.getRequestMethods().contains(httpRequestMethod)) { return; } if (requestMeta.getCallType() == CallType.ADDRESS) { final String requestPath = requestMeta.getRequestURI(); final String path = Str.join('/', context.getRootURI(), servicePath, requestPath).replaceAll("//*", "/"); addRequestEndPointUsingPath(context, service, method, requestMeta, path.toLowerCase(), requestMeta.getRequestURI(), servicePath); } else if (requestMeta.getCallType() == CallType.ADDRESS_WITH_PATH_PARAMS) { final String requestPath = StringScanner.substringBefore(requestMeta.getRequestURI(), "{"); final String path = Str.join('/', context.getRootURI(), servicePath, requestPath).replaceAll("//*", "/"); addRequestEndPointUsingPath(context, service, method, requestMeta, path.toLowerCase(), requestMeta.getRequestURI(), servicePath); } }
public static String substringAfter(String string, String after) { int index = StringScanner.findString(string, after); if (index==-1) { return ""; } else { return Str.slc(string, index+after.length()); } }