0

http://www.eclipse.org/forums/index.php/t/367608/で私が尋ねたのと同じ質問

関連で使用されるプロパティに、UML-Property で定義されているステレオタイプを適用したいと考えています。私が抱えている問題は、関連付けに関連付けられたプロパティにステレオタイプを使用する場合に IllegalArgumentException がスローされることです。クラスで属性として使用されるプロパティにステレオタイプを適用すると、すべて問題ありません。

例外スロー部分のコード スニペットを次に示します。

helper def: getStereotype(name: String): UML!Stereotype =
UML!Stereotype.allInstancesFrom('PRO') -> select(p | p.name = name) -> first();
-- ...
p1: UML!Property(

    upper <-a.associationEnds.first().conformance.upperBound,
    lower <- a.associationEnds.first().conformance.lowerBound,
    name <- a.associationEnds.first().name,
    type <- firstMemberType,
    opposite <- p2,
    isComposite <- true
),

p2: UML!Property(

        upper <-a.associationEnds.last().conformance.upperBound,
        lower <- a.associationEnds.last().conformance.lowerBound,
        name <- a.associationEnds.last().name,
        type <- secondMemberType,
        opposite <- p1
    ),

as:UML!Association(
        name <- a.name,
        ownedEnd <- Set{p2}
        navigableOwnedEnd <- Set{p1}
        )
    do {
p1.applyStereotype(thisModule.getStereotype('xsdElement')); -- here an exception is thrown: see below
}

次の IllegalArgumentException がスローされます。

Here appear some other resulting stacktraces.
......

Caused by: java.lang.IllegalArgumentException: org.eclipse.uml2.uml.internal.impl.StereotypeImpl@21ee05 (name: xsdElement, visibility: <unset>) (isLeaf: false, isAbstract: false) (isActive: false)
    at org.eclipse.uml2.uml.internal.operations.ElementOperations.applyStereotype(ElementOperations.java:1413)
    at org.eclipse.uml2.uml.internal.impl.ElementImpl.applyStereotype(ElementImpl.java:510)
    ... 18 more

私は使用しましUML=http://www.eclipse.org/uml2/3.0.0/UMLた。

p1 はもはやプロパティではないようです。誰でもアイデアはありますか?素晴らしいことだ。ありがとう、マーティン

EDIT1:

デバッグを行った後、フロー内のメソッドの呼び出しが最初に成功したことがわかりました。メソッド finalizeModel が呼び出されるまでは、すべて問題ありません。ATL UML2ModelAdapter の finalizeModel メソッドが呼び出されると、スタック トレースがスローされます。

Java Stack:
org.eclipse.m2m.atl.engine.emfvm.VMException
    at org.eclipse.m2m.atl.engine.emfvm.adapter.UML2ModelAdapter.finalizeModel(UML2ModelAdapter.java:51)
    at org.eclipse.m2m.atl.engine.emfvm.lib.ExecEnv.terminated(ExecEnv.java:2557)
    at org.eclipse.m2m.atl.engine.emfvm.ASM.run(ASM.java:210)
    at org.eclipse.m2m.atl.engine.emfvm.launch.EMFVMLauncher.internalLaunch(EMFVMLauncher.java:170)
    at org.eclipse.m2m.atl.engine.emfvm.launch.EMFVMUILauncher.launch(EMFVMUILauncher.java:46)
    at org.eclipse.m2m.atl.core.service.LauncherService.launch(LauncherService.java:136)
    at org.eclipse.m2m.atl.core.ui.launch.AtlLaunchConfigurationDelegate.launchOrDebug(AtlLaunchConfigurationDelegate.java:300)
    at org.eclipse.m2m.atl.core.ui.launch.AtlLaunchConfigurationDelegate.launch(AtlLaunchConfigurationDelegate.java:237)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:937)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1141)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.m2m.atl.engine.emfvm.adapter.UML2ModelAdapter.applyDelayedInvocations(UML2ModelAdapter.java:136)
    at org.eclipse.m2m.atl.engine.emfvm.adapter.UML2ModelAdapter.finalizeModel(UML2ModelAdapter.java:49)
    ... 12 more
Caused by: java.lang.IllegalArgumentException: org.eclipse.uml2.uml.internal.impl.StereotypeImpl@580b29 (name: xsdElement, visibility: <unset>) (isLeaf: false, isAbstract: false) (isActive: false)
    at org.eclipse.uml2.uml.internal.operations.ElementOperations.applyStereotype(ElementOperations.java:1413)
    at org.eclipse.uml2.uml.internal.impl.ElementImpl.applyStereotype(ElementImpl.java:510)
    ... 17 more
4

1 に答える 1

0

私は自分の問題を解決しました。

問題は、プロファイルをルートパッケージではなく、従属パッケージに適用したことでした。ルートパッケージに関連付けを追加しました。そのため、ルートパッケージにステレオタイプを適用しようとするたびに失敗しました。これは、私のプロファイルを認識していなかったためです。

したがって、プロパティに関連付けられたステレオタイプのアプリケーションは、プロパティが関連付けの一部である場合にのみクラッシュしました。クラス属性を表すプロパティは、従属パッケージに含まれていました。

http://www.eclipse.org/forums/index.php/t/367608/にも回答を投稿しました。

于 2012-07-17T12:12:01.073 に答える