com.zh.snmp.snmpcore.aop.BaseInterceptor.java Source code

Java tutorial

Introduction

Here is the source code for com.zh.snmp.snmpcore.aop.BaseInterceptor.java

Source

/*
 *  *  Copyright (c) 2010 Sonrisa Informatikai Kft. All Rights Reserved.
 *
 * This software is the confidential and proprietary information of
 * Sonrisa Informatikai Kft. ("Confidential Information").
 * You shall not disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Sonrisa.
 *
 * SONRISA MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SONRISA SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */

package com.zh.snmp.snmpcore.aop;

import java.lang.reflect.Method;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.reflect.MethodSignature;

/**
 * AOP-s interceptor-ok szosztlya, ami nhny kzs segd metdust tartalmaz.
 *
 * @author Joe
 */
public class BaseInterceptor {

    /** Log zenetben az zenet egyes szegmentumait elvlaszt karakter. */
    protected static final String DELIMITER = " - ";

    /** Log zenetben az argumentumok listja el kerl prefix. */
    private static final String ARGUMENTS_LIST_PREFIX = "arg(s): ";

    /** Log zenetben az argumentumok indexe s rtke kz kerl karakter.
       Pldul ha az els argumentum rtke "bar", akkor: 0=bar */
    private static final String ARGUMENT_INDEX_AND_VALUE_DELIMITER = "=";

    /** Log zenetben tbb argumentum esetn az argumentumok kz kerl elvlaszt karakter. */
    private static final String ARGUMENTS_DELIMITER = "; ";

    /** Log zenetben a metdusok neve utn rt zrjelet, a metdusok knnyebb lthatsga rdekben. */
    private static final String ROUND_BRACKETS = "()";

    /** Log zenetben az osztly s metdus nv kz rt pont karakter. */
    private static final String DOT = ".";

    /** Log zenetben az argumentumok listjt ilyen zrjelek kz rjuk ki. */
    private static final String OPEN_SQUARE_BRACKET = "[";

    /** Log zenetben az argumentumok listjt ilyen zrjelek kz rjuk ki. */
    private static final String CLOSE_SQUARE_BRACKET = "]";

    /** Log zenetben akkor rjuk ki ezt, ha nincs a metdusnak argumentuma. */
    private static final String NO_ARGS_MSG = "[no args]";

    // -------------------------------------------------------------------------
    // ~ Protected methods
    // -------------------------------------------------------------------------

    /**
     * Visszaadja a meghvott metdus argumentumainak nevt s rtkt egy
     * Srting-ben.
     *
     * @param joinPoint kapcsoldsi pont arra a metdusra, amit az aspektus figyel
     * @return
     */
    protected String appendAgrList(final JoinPoint joinPoint) {
        StringBuilder str = new StringBuilder();
        str.append(ARGUMENTS_LIST_PREFIX);

        Object[] argValues = joinPoint.getArgs();

        //ha nincs argumentum
        if (argValues == null || argValues.length == 0) {
            str.append(NO_ARGS_MSG);
            return str.toString();
        }

        //argumentum sorszm s rtek sszefzse
        str.append(OPEN_SQUARE_BRACKET);
        for (int i = 0; i < argValues.length; i++) {
            str.append(i);
            str.append(ARGUMENT_INDEX_AND_VALUE_DELIMITER);
            str.append(argValues[i]);
            if (i < argValues.length - 1) {
                str.append(ARGUMENTS_DELIMITER);
            }
        }
        str.append(CLOSE_SQUARE_BRACKET);
        return str.toString();
    }

    /**
     * Visszaadja, hogy melyik osztly, melyik metdusa kerlt meghvsra
     * szveges reprezentciban.
     * <p/>
     *
     * A <code>useSimpleClassName</code> rtktl fggen az osztlyokra
     * azok rvid vagy teljes nevvel hivatkozik.
     * <p/>
     * 
     * Peldaul:  <br/>
     * foo.bar.example.MyClass.myMethod() <br/>
     * vagy <br/>
     * MyClass.myMethod()
     *
     * @param joinPoint kapcsoldsi pont arra a metdusra, amit az aspektus figyel
     * @param useSimpleClassName osztlyok rvid vagy teljes nevt hasznlja-e
     */
    protected String getInvocationTarget(final JoinPoint joinPoint, final boolean useSimpleClassName) {
        String className;

        if (useSimpleClassName) {
            className = joinPoint.getTarget().getClass().getSimpleName();
        } else {
            className = joinPoint.getTarget().getClass().getName();
        }

        return appendClassWithMethod(className, joinPoint.getSignature().getName());
    }

    /**
     * Visszaadja a hvott metdust, mint reflexis objektum.
     *
     * @param joinPoint  kapcsoldsi pont arra a metdusra, amit az aspektus figyel
     * @return
     */
    protected Method retrieveTargetMethodFrom(JoinPoint joinPoint) {
        MethodSignature methodSignature = (MethodSignature) joinPoint.getSignature();
        return methodSignature.getMethod();
    }

    // -------------------------------------------------------------------------
    // ~ Private methods
    // -------------------------------------------------------------------------

    /**
     * sszefzi az osztlynevet a metdusnvvel,
     * ilyen formaban:
     * <p/>
     *
     * className.methodName()
     *
     * @param className osztly neve
     * @param methodName metdus neve
     *
     */
    private String appendClassWithMethod(final String className, final String methodName) {
        StringBuilder str = new StringBuilder();
        str.append(className);
        str.append(DOT);
        str.append(methodName);
        str.append(ROUND_BRACKETS);
        return str.toString();
    }

}