@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if ("getCmdText".equals(method.getName())) { return cmd.getCmdText(); } if ("setCmdText".equals(method.getName())) { if (args.length > 0) cmd.setCmdText((String) args[0]); return (Void.TYPE); } if ("execute".equals(method.getName())) { if (args.length > 0) { if (log.isDebugEnabled()) { log.debug("Stack before:"); outStackInLog(); log.debug("Context:"); outContextInLog(); StringBuilder outStr = new StringBuilder(); log.debug("Arguments:"); for (Object iArgs : args) { outStr.append(iArgs); outStr.append("; "); } log.debug(outStr); } cmd.execute((String) args[0]); // Результат реально отработавшей функции. if (log.isDebugEnabled()) { log.debug("Stack After:"); outStackInLog(); } } return Void.TYPE; } return null; // To change body of implemented methods use File | Settings | File Templates. }