[quote="wilder"]Я никак не могу получить список классов для интерфейса из пакета. Интерфейс в пакете это inner class[/quote]
если память не изменяет, class должен быть как минимум public или Global
Дано
Есть пакет. Префинкс у пакета - X
Есть класс внутри пакета
global with sharing class infrastructure {
global abstract class handler {
global abstract object execute(map < string, object > data);
}
}
Пакет установлен на орг, на орге сделана имплементация интерфейса из пакета
global class HLP_customActions {
global class copyData extends xrl.infrastructure.handler {
public override object execute(map < string, object > data) {
system.debug(LoggingLevel.Error,'EXECUTE START');
}
}
}
Так вот мне нужно через ApexTypeImplementor получить список всех классов с имплементаций X.infrastructure.handler
Дано
Есть пакет. Префинкс у пакета - X
Есть класс внутри пакета
[code]global with sharing class infrastructure {
global abstract class handler {
global abstract object execute(map < string, object > data);
}
}
[/code]
Пакет установлен на орг, на орге сделана имплементация интерфейса из пакета
[code]global class HLP_customActions {
global class copyData extends xrl.infrastructure.handler {
public override object execute(map < string, object > data) {
system.debug(LoggingLevel.Error,'EXECUTE START');
}
}
}
[/code]
Так вот мне нужно через ApexTypeImplementor получить список всех классов с имплементаций [b]X.infrastructure.handler[/b]
Через метадата я все могу:) но хотелось бы без костылей.
Я даже могу через простой SOQL и REGEX это сделать, но нам же дали ApexTypeImplementor:)
[quote="alex123"]Может как-то через Metadata API достучаться можно?[/quote]
Через метадата я все могу:) но хотелось бы без костылей.
Я даже могу через простой SOQL и REGEX это сделать, но нам же дали ApexTypeImplementor:)
ха-ха, если wilder задает вопрос, то значит это будет жесть, кровь и расчлененка
[quote="alex123"]А можешь рассказать что это такое для маленьких?)[/quote]
ха-ха, если wilder задает вопрос, то значит это будет жесть, кровь и расчлененка
:smiley:
Здесь же нету интерфейсов. ApexTypeImplementor чекает классы которые имплементирую интерфейсы а не те которые расширяют классы.
[quote="wilder"]Дано
Есть пакет. Префинкс у пакета - X
Есть класс внутри пакета
[code]global with sharing class infrastructure {
global abstract class handler {
global abstract object execute(map < string, object > data);
}
}
[/code]
Пакет установлен на орг, на орге сделана имплементация интерфейса из пакета
[code]global class HLP_customActions {
global class copyData extends xrl.infrastructure.handler {
public override object execute(map < string, object > data) {
system.debug(LoggingLevel.Error,'EXECUTE START');
}
}
}
[/code]
Так вот мне нужно через ApexTypeImplementor получить список всех классов с имплементаций [b]X.infrastructure.handler[/b][/quote]
Здесь же нету интерфейсов. ApexTypeImplementor чекает классы которые имплементирую интерфейсы а не те которые расширяют классы.
заменил абс класс на интерфес - все работает...
на самом деле классная штука, особенно если нужно достать все классы которые имплементируют Queueable, Batchable, Schedulable... Не нужно ковыряться с ApexClass.Body
на самом деле классная штука, особенно если нужно достать все классы которые имплементируют Queueable, Batchable, Schedulable... Не нужно ковыряться с ApexClass.Body
[quote="alex123"][quote="wilder"]Дано
Есть пакет. Префинкс у пакета - X
Есть класс внутри пакета
[code]global with sharing class infrastructure {
global abstract class handler {
global abstract object execute(map < string, object > data);
}
}
[/code]
Пакет установлен на орг, на орге сделана имплементация интерфейса из пакета
[code]global class HLP_customActions {
global class copyData extends xrl.infrastructure.handler {
public override object execute(map < string, object > data) {
system.debug(LoggingLevel.Error,'EXECUTE START');
}
}
}
[/code]
Так вот мне нужно через ApexTypeImplementor получить список всех классов с имплементаций [b]X.infrastructure.handler[/b][/quote]
Здесь же нету интерфейсов. ApexTypeImplementor чекает классы которые имплементирую интерфейсы а не те которые расширяют классы.
заменил абс класс Handler на интерфес - все работает...[/quote]
global with sharing class infrastructure {
global abstract class handler {
global abstract object execute(map < string, object > data);
}
}
Пакет установлен на орг, на орге сделана имплементация интерфейса из пакета
global class HLP_customActions {
global class copyData extends xrl.infrastructure.handler {
public override object execute(map < string, object > data) {
system.debug(LoggingLevel.Error,'EXECUTE START');
}
}
}
Так вот мне нужно через ApexTypeImplementor получить список всех классов с имплементаций X.infrastructure.handler
Здесь же нету интерфейсов. ApexTypeImplementor чекает классы которые имплементирую интерфейсы а не те которые расширяют классы.
заменил абс класс на интерфес - все работает...
я не совсем понял почему я должен что-то менять:)
У меня есть описание интерфейса и есть его имплементация. ApexTypeImplementor должен показывать имплементацию любого интерфейса или я ошибаюсь?:)
[quote="alex123"][quote="wilder"]Дано
Есть пакет. Префинкс у пакета - X
Есть класс внутри пакета
[code]global with sharing class infrastructure {
global abstract class handler {
global abstract object execute(map < string, object > data);
}
}
[/code]
Пакет установлен на орг, на орге сделана имплементация интерфейса из пакета
[code]global class HLP_customActions {
global class copyData extends xrl.infrastructure.handler {
public override object execute(map < string, object > data) {
system.debug(LoggingLevel.Error,'EXECUTE START');
}
}
}
[/code]
Так вот мне нужно через ApexTypeImplementor получить список всех классов с имплементаций [b]X.infrastructure.handler[/b][/quote]
Здесь же нету интерфейсов. ApexTypeImplementor чекает классы которые имплементирую интерфейсы а не те которые расширяют классы.
заменил абс класс на интерфес - все работает...[/quote]
я не совсем понял почему я должен что-то менять:)
У меня есть описание интерфейса и есть его имплементация.
ApexTypeImplementor должен показывать имплементацию любого интерфейса или я ошибаюсь?:)
Сори, я не имел ввиду что ты должен что-то менять. Я хотел сказать что ApexTypeImplementor вытягивает только классы которые имплементирую интерфейс(implements Infrastructure.Handler).Но в твоем примере ты имплементируешь абстрактный класс extends Infrastructure.Handler.
Сори, я не имел ввиду что ты должен что-то менять. Я хотел сказать что ApexTypeImplementor вытягивает только классы которые имплементирую интерфейс([b]implements Infrastructure.Handler[/b]).Но в твоем примере ты имплементируешь абстрактный класс [b]extends Infrastructure.Handler[/b].
ApexTypeImplementor должен показывать имплементацию любого интерфейса или я ошибаюсь?:)
ApexTypeImplementor вытягивае имплементацию любого интерфейса, а не абстрактного класса
[quote="wilder"]
ApexTypeImplementor должен показывать имплементацию любого интерфейса или я ошибаюсь?:)[/quote]
ApexTypeImplementor вытягивае имплементацию любого интерфейса, а не абстрактного класса
ApexTypeImplementor должен показывать имплементацию любого интерфейса или я ошибаюсь?:)
ApexTypeImplementor вытягивае имплементацию любого интерфейса, а не абстрактного класса
[quote="aliaksandr"][quote="wilder"]
ApexTypeImplementor должен показывать имплементацию любого интерфейса или я ошибаюсь?:)[/quote]
ApexTypeImplementor вытягивае имплементацию любого интерфейса, а не абстрактного класса[/quote]
Согласен, мой затуп:)
Теперь осталось вспомнить почему я так сделал:)
Похоже пора отдыхать
Теперь осталось вспомнить почему я так сделал:)
Если не ошибаюсь, то дело было из-за JSON.deserialize