Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отследить вызов метода? / 25 сообщений из 28, страница 1 из 2
04.04.2020, 15:36
    #39943879
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Все привет!
В классе на скрине ниже, вызывается метод getAttributeValues() при инициализации коллекции в методе findAttrbute. В этом же классе есть метод этот метод getAttributeValues(), но он не запускается, а вызывается где-то еще.
Подскажите пожалуйста , как в intellij idea отследить в каком месте программы, реализации происходит вызов getAttributeValues()?
Спасибо!
...
Рейтинг: 0 / 0
04.04.2020, 16:00
    #39943887
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Сгенерить исключение в getAttributeValues() и посмотреть стектрейс?
...
Рейтинг: 0 / 0
04.04.2020, 16:36
    #39943906
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
авторSynoptic,Сгенерить исключение в getAttributeValues() и посмотреть стектрейс?

Как это сделать ?
...
Рейтинг: 0 / 0
04.04.2020, 16:47
    #39943913
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Synoptic,
Пошаговая отладка?
...
Рейтинг: 0 / 0
04.04.2020, 17:36
    #39943953
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Не работает если вызов идет через рефлексию.
...
Рейтинг: 0 / 0
04.04.2020, 18:10
    #39943970
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
На самом деле бросать эксцепшен не обязательно. Вы можете сформировать стектрейс и без этого.

Вот как тут пишут https://javaswing.wordpress.com/2010/01/02/stacktrace_using/
...
Рейтинг: 0 / 0
04.04.2020, 19:07
    #39943995
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
maytonНа самом деле бросать эксцепшен не обязательно. Вы можете сформировать стектрейс и без этого.

Вот как тут пишут https://javaswing.wordpress.com/2010/01/02/stacktrace_using/


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
String message = "";
if(stackTraceElements.length >= 3) {
    StackTraceElement element = stackTraceElements[2];
    String className = element.getClassName();
    String methodName = element.getMethodName();
    message = className + ": " + methodName;
}



Ой, а как это должно выглядеть с моим кодом? , какие строки добавлять из всего этого ?
...
Рейтинг: 0 / 0
04.04.2020, 19:08
    #39943996
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
В геттер и добавь.
...
Рейтинг: 0 / 0
04.04.2020, 19:32
    #39943998
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Так ?
...
Рейтинг: 0 / 0
04.04.2020, 19:37
    #39944000
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Ты прикалываешся скрины делать? Как я могу по картике сделать правки или компилляцию?

Напиши чортов код как здесь.

Код: java
1.
2.
3.
public class ... {

}
...
Рейтинг: 0 / 0
04.04.2020, 19:40
    #39944001
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
mayton,
он прикалывается.
...
Рейтинг: 0 / 0
04.04.2020, 19:55
    #39944003
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
PetroNotC Sharp,извините
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
@MappedSuperclass
public abstract class AbstractDomainEntity implements DomainEntity<Long>, Copyable {


    @Transient
    public boolean isAttributeValue(String attributeName) {
        return  findAttribute(attributeName) != null;
    }

    private AttributeValue findAttribute(String name) {
        System.out.println("Enter into the findAttribute");
        if (name == null) {
            return null;
        }

        Collection<AttributeValue> attributeValues = getAttributeValues();
        if (attributeValues == null) {
        	return null;
        }
	StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
	String message = "";
		if(stackTraceElements.length >= 3) {
    			StackTraceElement element = stackTraceElements[2];
    			String className = element.getClassName();
    			String methodName = element.getMethodName();
    			message = className + ": " + methodName;
		}		
	System.out.println(message);
	}

@Transient
    public Collection<AttributeValue> getAttributeValues() {
        return null;
    }
...
Рейтинг: 0 / 0
04.04.2020, 20:13
    #39944008
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Вот так красивее форматирование.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        StringBuilder sb = new StringBuilder("Stacktrace dump: \n");
        for(StackTraceElement stackTraceElement : Thread.currentThread().getStackTrace()) {
            sb.append("\t")
                    .append(stackTraceElement.getClassName())
                    .append(":")
                    .append(stackTraceElement.getMethodName())
                    .append(":")
                    .append(stackTraceElement.getLineNumber())
                    .append("\n");
        }
        logger.info(sb.toString());
        // System.exit(0);
...
Рейтинг: 0 / 0
04.04.2020, 20:46
    #39944014
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
mayton,
Как его правильно читать ?
Выводится дальнейшая последовательность вызовов(шагов работы программы), после выполнения getAttributeValues?
Сверху вниз?
или я ошибаюсь и наоборот ?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Stacktrace dump: 
	java.lang.Thread:getStackTrace:1592
	ru.sample.cc.domain.AbstractDomainEntity:findAttribute:88
	ru.sample.cc.domain.AbstractDomainEntity:getAttributeValue:63
	ru.sample.cc.domain.AbstractDomainEntity:getAttributeValue:117
	sun.reflect.NativeMethodAccessorImpl:invoke0:-2
	sun.reflect.NativeMethodAccessorImpl:invoke:57
	sun.reflect.DelegatingMethodAccessorImpl:invoke:43
	java.lang.reflect.Method:invoke:607
	org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer:invoke:197
...
Рейтинг: 0 / 0
04.04.2020, 20:49
    #39944016
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Так же как и в стандартном Exception. Снизу вверх идут последовательность вызовов.
...
Рейтинг: 0 / 0
04.04.2020, 21:04
    #39944018
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
mayton,

авторТак же как и в стандартном Exception. Снизу вверх идут последовательность вызовов.
ой, ну а мне то нужно то что после,
Код: javascript
1.
ru.sample.cc.domain.AbstractDomainEntity:getAttributeValue:63


те получается ваш снипет кода добавляется в 64 строку здесь после вызова 63, и тогда он мне все покажет, так ?
...
Рейтинг: 0 / 0
04.04.2020, 21:10
    #39944019
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Объясни как ты себе понимаешь "после".
...
Рейтинг: 0 / 0
04.04.2020, 21:23
    #39944022
fixxer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Если хочешь узнать откуда вызывается getAttributeValues, так и стектрейс нужно из него выводить.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
@Transient
public Collection<AttributeValue> getAttributeValues() {
        StringBuilder sb = new StringBuilder("Stacktrace dump: \n");
        for(StackTraceElement stackTraceElement : Thread.currentThread().getStackTrace()) {
            sb.append("\t")
                    .append(stackTraceElement.getClassName())
                    .append(":")
                    .append(stackTraceElement.getMethodName())
                    .append(":")
                    .append(stackTraceElement.getLineNumber())
                    .append("\n");
        }
        logger.info(sb.toString());
        return null;
}
...
Рейтинг: 0 / 0
04.04.2020, 22:52
    #39944036
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
fixxer,

fixxerЕсли хочешь узнать откуда вызывается getAttributeValues, так и стектрейс нужно из него выводить.
Он не заходит в этот метод, вызывается где-то в другом месте, где не знаю, поэтому и задал здесь вопрос.
...
Рейтинг: 0 / 0
05.04.2020, 09:20
    #39944069
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Хибернейт его вызывает.
...
Рейтинг: 0 / 0
05.04.2020, 14:07
    #39944098
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
mayton,

maytonХибернейт его вызывает.
Как это увидеть?
...
Рейтинг: 0 / 0
05.04.2020, 14:40
    #39944104
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Dr.Hofmann, если ты решил начать изучение Хибернейта с такого подхода - то это плохо.

На самом деле твоя проблема - другая. Расскажи настоящую проблему в терминах
бизнес-задачи - и тебе дадут дельные советы.
...
Рейтинг: 0 / 0
05.04.2020, 14:57
    #39944105
Dr.Hofmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
mayton,

авторDr.Hofmann, если ты решил начать изучение Хибернейта с такого подхода - то это плохо.

На самом деле твоя проблема - другая. Расскажи настоящую проблему в терминах
бизнес-задачи - и тебе дадут дельные советы.

В коде разбираюсь, вот основная задача.
Мне советы не нужны мне нужно разобрать в вопросе. Если тебе нечего писать не пиши, другие напишут.
...
Рейтинг: 0 / 0
05.04.2020, 15:01
    #39944108
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Как будет угодно.
...
Рейтинг: 0 / 0
05.04.2020, 15:19
    #39944110
Synoptic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить вызов метода?
Dr.Hofmann
Если тебе нечего писать не пиши, другие напишут.
После таких слов уже врятли будут нормальные советы.
Ну и как бы Хофман не должен задавать вопросы про Джаву
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как отследить вызов метода? / 25 сообщений из 28, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]