Служба упаковки Acceleo java не принимает сложный параметр - неверный результат для выражения self.invoke

Я не могу вызвать службу упаковки java в Acceleo, потому что она не распознает тип параметров. Это мой простой тестовый код: main вызывает запрос, хранящийся в Services.mtl, который вызывает службу Java, которая просто возвращает имя объекта «Отправить».

Main.mtl

[file ('system.P', false, 'UTF-8')]
     [for (t : Send | aSystemBehavior.transitions)) ]
             [getName(t)/]
     [/for]
[/file]

Services.mtl

[query public getName(arg0 : Send) : String
    = invoke('myPackage.Services', 'getName(myPackage.Send)', Sequence{arg0})

/]

Services.java

public class Services 
{
   public String getName(Send t)
        {return t.getName();}
}

Журнал ошибок показывает:

Недопустимый результат для выражения self.invoke('myPakage.Services', 'getName(myPakage.Send)', Sequence {arg0}) в строке 0 в службах модуля для запроса getName(Send). Последнее записанное значение self было org.eclipse.emf.ecore.impl.DynamicEObjectImpl@1f00eb36 (eClass: org.eclipse.emf.ecore.impl.EClassImpl@2c2aade3 (name: Send) (instanceClassName: null) (абстрактный: false, интерфейс: ложь)). Обнаружена проблема при создании файловой системы system.P'.

Если я использую String в качестве типа параметра вместо Send, все работает нормально.


person DeLac    schedule 28.05.2014    source источник


Ответы (2)


Был ли экспортирован пакет, содержащий услугу «Услуги»? Если нет, откройте файл MANIFEST.MF, перейдите на вкладку среды выполнения и добавьте его пакет в список экспортируемых пакетов. Вы уверены, что у вашего объекта «Отправить» есть имя? Это сообщение указывает только на то, что запрос getName вернул null.

person sbegaudeau    schedule 30.05.2014
comment
Да, он экспортируется и у него есть имя, если я попытаюсь напечатать его без java, но с [t.name/] работает (t - это объект типа Send в for) - person DeLac; 03.06.2014

У меня больше нет этой проблемы... Я создал новый проект Acceleo с нуля, и он работает. Я не уверен, в чем проблема... может быть, дело в выборе метамоделей для импорта во время создания модуля (мне приходится выбирать между метамоделью во время выполнения и во время разработки).

person DeLac    schedule 18.07.2014