com.alibaba.chaosblade.exec.common.model.matcher.MatcherModel.add() - java examples

Here are the examples of the java api com.alibaba.chaosblade.exec.common.model.matcher.MatcherModel.add() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

9 Examples 7

19 View Complete Implementation : MethodEnhancerForAfter.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doAfterAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments, Object returnObject) throws Exception {
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(MethodConstant.CLreplaced_MATCHER_NAME, clreplacedName);
    matcherModel.add(MethodConstant.METHOD_MATCHER_NAME, method.getName());
    matcherModel.add(MethodConstant.AFTER_METHOD_FLAG, "true");
    EnhancerModel model = new EnhancerModel(clreplacedLoader, matcherModel);
    model.setTarget(ModelConstant.JVM_TARGET).setClreplacedLoader(clreplacedLoader).setObject(object).setMethod(method).setMethodArguments(methodArguments).setReturnValue(returnObject);
    return model;
}

19 View Complete Implementation : MethodEnhancerForBefore.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(MethodConstant.CLreplaced_MATCHER_NAME, clreplacedName);
    matcherModel.add(MethodConstant.METHOD_MATCHER_NAME, method.getName());
    EnhancerModel model = new EnhancerModel(clreplacedLoader, matcherModel);
    model.setTarget(ModelConstant.JVM_TARGET).setClreplacedLoader(clreplacedLoader).setObject(object).setMethod(method).setMethodArguments(methodArguments);
    return model;
}

19 View Complete Implementation : DubboEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    if (method.getName().equals(RECEIVED_METHOD)) {
        // received method for thread pool experiment
        DubboThreadPoolFullExecutor.INSTANCE.setWrappedChannelHandler(object);
        return null;
    }
    Object invocation = methodArguments[0];
    if (object == null || invocation == null) {
        LOGGER.warn("The necessary parameter is null.");
        return null;
    }
    Object url = getUrl(object, invocation);
    if (url == null) {
        LOGGER.warn("Url is null, can not get necessary values.");
        return null;
    }
    String appName = ReflectUtil.invokeMethod(url, GET_PARAMETER, new Object[] { APPLICATION_KEY }, false);
    String methodName = ReflectUtil.invokeMethod(invocation, GET_METHOD_NAME, new Object[0], false);
    String[] serviceAndVersionGroup = getServiceNameWithVersionGroup(invocation, url);
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(DubboConstant.APP_KEY, appName);
    matcherModel.add(DubboConstant.SERVICE_KEY, serviceAndVersionGroup[0]);
    matcherModel.add(DubboConstant.VERSION_KEY, serviceAndVersionGroup[1]);
    if (2 < serviceAndVersionGroup.length && null != serviceAndVersionGroup[2]) {
        matcherModel.add(DubboConstant.GROUP_KEY, serviceAndVersionGroup[2]);
    }
    matcherModel.add(DubboConstant.METHOD_KEY, methodName);
    int timeout = getTimeout(methodName, object, invocation);
    matcherModel.add(DubboConstant.TIMEOUT_KEY, timeout + "");
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("dubbo matchers: {}", JSON.toJSONString(matcherModel));
    }
    EnhancerModel enhancerModel = new EnhancerModel(clreplacedLoader, matcherModel);
    enhancerModel.setTimeoutExecutor(createTimeoutExecutor(clreplacedLoader, timeout, clreplacedName));
    postDoBeforeAdvice(enhancerModel);
    return enhancerModel;
}

19 View Complete Implementation : HttpEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(HttpConstant.URI_KEY, getUrl(methodArguments));
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("http matchers: {}", JSON.toJSONString(matcherModel));
    }
    EnhancerModel enhancerModel = new EnhancerModel(clreplacedLoader, matcherModel);
    postDoBeforeAdvice(enhancerModel);
    return new EnhancerModel(clreplacedLoader, matcherModel);
}

19 View Complete Implementation : JedisEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
/**
 * final RedisOutputStream os,
 * final byte[] command,
 * final byte[]... args
 */
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    if (methodArguments == null || methodArguments.length != 3) {
        LOGGER.info("The necessary parameters is null or length is not equal 3, {}", methodArguments != null ? methodArguments.length : null);
        return null;
    }
    Object command = methodArguments[1];
    if (!(command instanceof byte[])) {
        return null;
    }
    Object args = methodArguments[2];
    if (!args.getClreplaced().isArray() || !(args instanceof byte[][])) {
        return null;
    }
    String cmd = new String((byte[]) command, CHARSET);
    List<String> sargs = new ArrayList<String>();
    byte[][] bargs = (byte[][]) args;
    for (int i = 0; i < bargs.length; i++) {
        sargs.add(new String(bargs[i], CHARSET));
    }
    String key = null;
    if (sargs.size() > 0) {
        key = sargs.get(0);
    }
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(JedisConstant.COMMAND_TYPE_MATCHER_NAME, cmd.toLowerCase());
    if (key != null) {
        matcherModel.add(JedisConstant.KEY_MATCHER_NAME, key);
    }
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("jedis matchers: {}", JSON.toJSONString(matcherModel));
    }
    return new EnhancerModel(clreplacedLoader, matcherModel);
}

19 View Complete Implementation : MysqlEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    if (methodArguments == null || object == null || methodArguments.length != 10) {
        LOGGER.warn("The necessary parameters is null or length is not equal 10, {}", methodArguments != null ? methodArguments.length : null);
        return null;
    }
    Object statement = methodArguments[0];
    Object query = methodArguments[1];
    Object catalog = methodArguments[8];
    String host = ReflectUtil.getFieldValue(object, "host", false);
    Integer port = ReflectUtil.getFieldValue(object, "port", false);
    String sql = null;
    String database = null;
    String table = null;
    if (query == null) {
        boolean isPreparedStatement = ReflectUtil.isreplacedignableFrom(clreplacedLoader, statement.getClreplaced(), "com.mysql.jdbc.PreparedStatement");
        if (isPreparedStatement) {
            sql = ReflectUtil.invokeMethod(statement, "getPreparedSql", new Object[0], false);
        }
    } else {
        sql = (String) query;
    }
    if (catalog == null && table != null) {
        String[] dbAndTable = table.split(".");
        if (dbAndTable.length == 2) {
            database = dbAndTable[0];
        }
    } else {
        database = (String) catalog;
    }
    table = SQLParserUtil.findTableName(sql);
    SqlType type = SQLParserUtil.getSqlType(sql);
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(MysqlConstant.HOST_MATCHER_NAME, host);
    matcherModel.add(MysqlConstant.TABLE_MATCHER_NAME, table);
    matcherModel.add(MysqlConstant.DATABASE_MATCHER_NAME, database);
    if (type != null) {
        matcherModel.add(MysqlConstant.SQL_TYPE_MATCHER_NAME, type.name());
    }
    if (port != null) {
        matcherModel.add(MysqlConstant.PORT_MATCHER_NAME, port.toString());
    }
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("mysql matchers: {}", JSON.toJSONString(matcherModel));
    }
    return new EnhancerModel(clreplacedLoader, matcherModel);
}

19 View Complete Implementation : PostgrelsqlEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
/**
 * Object[] methodArguments
 * Query query,
 * ParameterList parameters,
 * ResultHandler handler,
 * int maxRows,
 * int fetchSize,
 * int flags
 */
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    if (methodArguments == null || object == null || methodArguments.length != 6) {
        LOGGER.info("The necessary parameters is null or length is not equal 6, {}", methodArguments != null ? methodArguments.length : null);
        return null;
    }
    Object query = methodArguments[0];
    Object pgStream = ReflectUtil.getSuperclreplacedFieldValue(object, "pgStream", false);
    Object hostSpec = ReflectUtil.getFieldValue(pgStream, "hostSpec", false);
    String host = ReflectUtil.getFieldValue(hostSpec, "host", false);
    Integer port = ReflectUtil.getFieldValue(hostSpec, "port", false);
    String sql = null;
    if (query != null) {
        // 获取执行的sql
        boolean isPreparedStatement = ReflectUtil.isreplacedignableFrom(clreplacedLoader, query.getClreplaced(), "org.postgresql.core.Query");
        if (isPreparedStatement) {
            sql = ReflectUtil.invokeMethod(query, "getNativeSql", new Object[0], false);
        }
    } else {
    // sql = (String)query;
    }
    String table = SQLParserUtil.findTableName(sql);
    SqlType type = SQLParserUtil.getSqlType(sql);
    String database = ReflectUtil.getFieldValue(object, "database", false);
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(PostgrelsqlConstant.HOST_MATCHER_NAME, host);
    matcherModel.add(PostgrelsqlConstant.TABLE_MATCHER_NAME, table);
    matcherModel.add(PostgrelsqlConstant.DATABASE_MATCHER_NAME, database);
    if (type != null) {
        matcherModel.add(PostgrelsqlConstant.SQL_TYPE_MATCHER_NAME, type.name());
    }
    if (port != null) {
        matcherModel.add(PostgrelsqlConstant.PORT_MATCHER_NAME, port.toString());
    }
    if (LOGGER.isDebugEnabled()) {
        LOGGER.debug("postgrelsql matchers: {}", JSON.toJSONString(matcherModel));
    }
    return new EnhancerModel(clreplacedLoader, matcherModel);
}

19 View Complete Implementation : RocketMqEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    MatcherModel matcherModel = new MatcherModel();
    Object remoteingCommnadRequest = selectParamByClreplacedName(clreplacedLoader, methodArguments, CLreplaced_REMOTEING_COMMAND_CLreplaced);
    if (remoteingCommnadRequest == null) {
        return new EnhancerModel(clreplacedLoader, matcherModel);
    } else {
        Object header = ReflectUtil.getFieldValue(remoteingCommnadRequest, FIELD_CUSTOM_HEADER, false);
        if (header == null) {
            return new EnhancerModel(clreplacedLoader, matcherModel);
        }
        String topic = null;
        String consumerGroup = null;
        String producerGroup = null;
        if (isPullMessageHeader(clreplacedLoader, header)) {
            topic = ReflectUtil.getFieldValue(header, FLAG_NAME_TOPIC, false);
            consumerGroup = ReflectUtil.getFieldValue(header, FLAG_CONSUMER_GROUP, false);
        } else if (isSendMessageHeader(clreplacedLoader, header)) {
            topic = ReflectUtil.getFieldValue(header, FLAG_NAME_TOPIC, false);
            producerGroup = ReflectUtil.getFieldValue(header, FLAG_PRODUCER_GROUP, false);
        } else if (isSendMessageHeaderV2(clreplacedLoader, header)) {
            topic = ReflectUtil.getFieldValue(header, "b", false);
            producerGroup = ReflectUtil.getFieldValue(header, "a", false);
        }
        matcherModel.add(FLAG_NAME_TOPIC, topic);
        matcherModel.add(FLAG_CONSUMER_GROUP, consumerGroup);
        matcherModel.add(FLAG_PRODUCER_GROUP, producerGroup);
        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("rocketmq matchers: {}", JSON.toJSONString(matcherModel));
        }
        return new EnhancerModel(clreplacedLoader, matcherModel);
    }
}

19 View Complete Implementation : ServletEnhancer.java
Copyright Apache License 2.0
Author : chaosblade-io
@Override
public EnhancerModel doBeforeAdvice(ClreplacedLoader clreplacedLoader, String clreplacedName, Object object, Method method, Object[] methodArguments) throws Exception {
    Object request = methodArguments[0];
    String pathInfo = ReflectUtil.invokeMethod(request, "getPathInfo", new Object[] {}, false);
    String queryString = ReflectUtil.invokeMethod(request, "getQueryString", new Object[] {}, false);
    String servletPath = ReflectUtil.invokeMethod(request, "getServletPath", new Object[] {}, false);
    String requestMethod = ReflectUtil.invokeMethod(request, "getMethod", new Object[] {}, false);
    // RequestUri without ContextPath
    String requestPath = StringUtils.isNotBlank(pathInfo) ? servletPath + pathInfo : servletPath;
    MatcherModel matcherModel = new MatcherModel();
    matcherModel.add(ServletConstant.PATH_INFO_KEY, pathInfo);
    matcherModel.add(ServletConstant.QUERY_STRING_KEY, queryString);
    matcherModel.add(ServletConstant.SERVLET_PATH_KEY, servletPath);
    matcherModel.add(ServletConstant.METHOD_KEY, requestMethod);
    matcherModel.add(ServletConstant.REQUEST_PATH_KEY, requestPath);
    LOOGER.debug("servlet matchers: {}", JSON.toJSONString(matcherModel));
    return new EnhancerModel(clreplacedLoader, matcherModel);
}