Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [henshin-dev] henshin-dev Digest, Vol 56, Issue 3

Hi Christian,

Thank you for your response. Actually, I have to match string constants and I tested with integers but this problem persists.

Yes , this occurs specifically when the rule has to evaluate attribute values. And I performed the deleting of a contained node without errors.

Please find below the resources I used to test this scenario:


//Test.ecore

<?xml version="1.0" encoding="UTF-8"?>

<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="test" nsURI="http://test/1.0" nsPrefix="test">

  <eClassifiers xsi:type="ecore:EClass" name="Rule">

    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>

    <eStructuralFeatures xsi:type="ecore:EReference" name="params" upperBound="-1"

        eType="#//Param" containment="true"/>

    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>

  </eClassifiers>

  <eClassifiers xsi:type="ecore:EClass" name="Param"/>

</ecore:EPackage>


//unit1.henshin

<?xml version="1.0" encoding="UTF-8"?>

<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_bIT78IlJEeS-Lpe2rDONkQ">

  <imports href="" href="http://test/1.0#/">http://test/1.0#/"/>

  <units xsi:type="henshin:Rule" xmi:id="_cmLoIIlJEeS-Lpe2rDONkQ" name="r1">

    <lhs xmi:id="_cnX68IlJEeS-Lpe2rDONkQ" name="Lhs">

      <nodes xmi:id="_eMsS8IlJEeS-Lpe2rDONkQ">

        <type href="" href="http://test/1.0#//Rule">http://test/1.0#//Rule"/>

        <attributes xmi:id="_gN0dMIlJEeS-Lpe2rDONkQ" value="&quot;a&quot;">

          <type href="" href="http://test/1.0#//Rule/name">http://test/1.0#//Rule/name"/>

        </attributes>

      </nodes>

    </lhs>

    <rhs xmi:id="_cnX68YlJEeS-Lpe2rDONkQ" name="Rhs">

      <nodes xmi:id="_eMsS8YlJEeS-Lpe2rDONkQ">

        <type href="" href="http://test/1.0#//Rule">http://test/1.0#//Rule"/>

        <attributes xmi:id="_gN0dMYlJEeS-Lpe2rDONkQ" value="&quot;b&quot;">

          <type href="" href="http://test/1.0#//Rule/name">http://test/1.0#//Rule/name"/>

        </attributes>

      </nodes>

    </rhs>

    <mappings xmi:id="_eMsS8olJEeS-Lpe2rDONkQ" origin="_eMsS8IlJEeS-Lpe2rDONkQ" image="_eMsS8YlJEeS-Lpe2rDONkQ"/>

  </units>

</henshin:Module>



//base.xmi

<?xml version="1.0" encoding="ASCII"?>

<test:Rule xmi:version="2.0"

    xmlns:xmi="http://www.omg.org/XMI"

    xmlns:test="http://test/1.0"

    name="a">

  <params/>

  <params/>

</test:Rule>


//unit1.henshin (the running version that deletes a Param node)

<?xml version="1.0" encoding="UTF-8"?>

<henshin:Module xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:henshin="http://www.eclipse.org/emf/2011/Henshin" xmi:id="_lxujgIm-EeSNK6Vke8rPuQ">

  <imports href="" href="http://test/1.0#/">http://test/1.0#/"/>

  <units xsi:type="henshin:Rule" xmi:id="_rhBBkIm-EeSNK6Vke8rPuQ" name="r1">

    <lhs xmi:id="_rhBBlYm-EeSNK6Vke8rPuQ" name="Lhs">

      <nodes xmi:id="_I5rksIm_EeSNK6Vke8rPuQ" outgoing="_JPZ9E4m_EeSNK6Vke8rPuQ">

        <type href="" href="http://test/1.0#//Rule">http://test/1.0#//Rule"/>

      </nodes>

      <nodes xmi:id="_JPZ9EIm_EeSNK6Vke8rPuQ" incoming="_JPZ9E4m_EeSNK6Vke8rPuQ">

        <type href="" href="http://test/1.0#//Param">http://test/1.0#//Param"/>

      </nodes>

      <edges xmi:id="_JPZ9E4m_EeSNK6Vke8rPuQ" source="_I5rksIm_EeSNK6Vke8rPuQ" target="_JPZ9EIm_EeSNK6Vke8rPuQ">

        <type href="" href="http://test/1.0#//Rule/params">http://test/1.0#//Rule/params"/>

      </edges>

    </lhs>

    <rhs xmi:id="_rhBBlom-EeSNK6Vke8rPuQ" name="Rhs">

      <nodes xmi:id="_I5rksYm_EeSNK6Vke8rPuQ">

        <type href="" href="http://test/1.0#//Rule">http://test/1.0#//Rule"/>

      </nodes>

    </rhs>

    <mappings xmi:id="_I5rksom_EeSNK6Vke8rPuQ" origin="_I5rksIm_EeSNK6Vke8rPuQ" image="_I5rksYm_EeSNK6Vke8rPuQ"/>

  </units>

</henshin:Module>



Greetings,



Youness LAGHOUAOUTA

Phd Student 

Mohammed V-Rabat University



2014-12-24 8:32 GMT+00:00 <henshin-dev-request@xxxxxxxxxxx>:
Send henshin-dev mailing list submissions to
        henshin-dev@xxxxxxxxxxx

To subscribe or unsubscribe via the World Wide Web, visit
        https://dev.eclipse.org/mailman/listinfo/henshin-dev
or, via email, send a message with subject or body 'help' to
        henshin-dev-request@xxxxxxxxxxx

You can reach the person managing the list at
        henshin-dev-owner@xxxxxxxxxxx

When replying, please edit your Subject line so it is more specific
than "Re: Contents of henshin-dev digest..."


Today's Topics:

   1. Failed to execute henshin rules in plug-in        developement
      (laghouaouta youness)
   2. Re: Failed to execute henshin rules in plug-in    developement
      (Christian Krause)


----------------------------------------------------------------------

Message: 1
Date: Tue, 23 Dec 2014 21:30:48 +0000
From: laghouaouta youness <rabat.ntic@xxxxxxxxx>
To: henshin-dev@xxxxxxxxxxx
Subject: [henshin-dev] Failed to execute henshin rules in plug-in
        developement
Message-ID:
        <CANmOEp=Oy2X7C6SCxQLDc0+kHUkkJB=EBqvPfU4ukpmKTg1Bdg@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset="utf-8"

Hi

I?m working on an eclipse plug-in that employ a specific graph
transformation to weave certain patterns in a base model. I have
programmatically performed this scenario with a JAVA application, but I
couldn't do it in an eclipse plug-in project. Using the debugging mode, I
got the following exception thrown by the call of the execute() operation.


Particularly, this problem occurs when the graph transformation has to
manipulate an attribute value, and I was able to debug the program without
errors for a transformation that simply removes a graph node.


java.lang.NullPointerException

at
org.eclipse.emf.ecore.util.EcoreUtil.createFromString(EcoreUtil.java:3483)

at
org.eclipse.emf.henshin.interpreter.impl.EngineImpl.castValueToDataType(EngineImpl.java:969)

at
org.eclipse.emf.henshin.interpreter.impl.EngineImpl.evalAttributeExpression(EngineImpl.java:895)

at
org.eclipse.emf.henshin.interpreter.info.VariableInfo.createConstraints(VariableInfo.java:188)

at
org.eclipse.emf.henshin.interpreter.info.VariableInfo.createVariables(VariableInfo.java:111)

at
org.eclipse.emf.henshin.interpreter.info.VariableInfo.<init>(VariableInfo.java:77)

at
org.eclipse.emf.henshin.interpreter.info.RuleInfo.<init>(RuleInfo.java:26)

at
org.eclipse.emf.henshin.interpreter.impl.EngineImpl.getRuleInfo(EngineImpl.java:703)

at
org.eclipse.emf.henshin.interpreter.impl.EngineImpl$MatchFinder.<init>(EngineImpl.java:305)

at
org.eclipse.emf.henshin.interpreter.impl.EngineImpl$MatchGenerator.iterator(EngineImpl.java:251)

at
org.eclipse.emf.henshin.interpreter.impl.RuleApplicationImpl.execute(RuleApplicationImpl.java:89)

at
org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl.executeRule(UnitApplicationImpl.java:175)

at
org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl.doExecute(UnitApplicationImpl.java:99)

at
org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl.execute(UnitApplicationImpl.java:89)

at run.Main.execute(Main.java:55)



The code fragment we use to execute the henshin transformation is given
here:


HenshinResourceSet resourceSet = new HenshinResourceSet(ResourcePath);

Module module = resourceSet.getModule("unit1.henshin", false);

Resource r = resourceSet.getResource("Test.ecore");

EObject eObject = r.getContents().get(0);

if (eObject instanceof EPackage) {

    EPackage p = (EPackage)eObject;

    resourceSet.getPackageRegistry().put(p.getNsURI(), p);

}

EGraph graph = new EGraphImpl(resourceSet.getResource("base.xmi"));

Engine engine = new EngineImpl();

UnitApplication app = new UnitApplicationImpl(engine);

app.setEGraph(graph);

app.setUnit(module.getUnit("r1"));

app.execute(null);

Resource rs=resourceSet.getResource("base.xmi");

rs.setModified(true);

rs.getContents().clear();

for(int i=0;i<graph.getRoots().size();i++){

rs.getContents().add(graph.getRoots().get(i));

}

rs.save(null);


Greetings,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dev.eclipse.org/mailman/private/henshin-dev/attachments/20141223/59976ecb/attachment.html>

------------------------------

Message: 2
Date: Wed, 24 Dec 2014 09:32:16 +0100
From: Christian Krause <henshin.ck@xxxxxxxxx>
To: Henshin developers mailing list <henshin-dev@xxxxxxxxxxx>
Subject: Re: [henshin-dev] Failed to execute henshin rules in plug-in
        developement
Message-ID:
        <CAHwrtvpQJFxeQoSh=RU9gVC_79-J8XyJH0+0fShazG6g6Qn+sQ@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset="utf-8"

Hi laghouaouta,

from the exception it looks like in your rule an attribute is matched
using a constant and that this constant cannot correctly be instantiated
from its string representation. How does your rule exactly look like
(particularly
the attribute part)?

Cheers,
Christian

2014-12-23 22:30 GMT+01:00 laghouaouta youness <rabat.ntic@xxxxxxxxx>:

> Hi
>
> I?m working on an eclipse plug-in that employ a specific graph
> transformation to weave certain patterns in a base model. I have
> programmatically performed this scenario with a JAVA application, but I
> couldn't do it in an eclipse plug-in project. Using the debugging mode, I
> got the following exception thrown by the call of the execute() operation.
>
>
> Particularly, this problem occurs when the graph transformation has to
> manipulate an attribute value, and I was able to debug the program without
> errors for a transformation that simply removes a graph node.
>
>
> java.lang.NullPointerException
>
> at
> org.eclipse.emf.ecore.util.EcoreUtil.createFromString(EcoreUtil.java:3483)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.EngineImpl.castValueToDataType(EngineImpl.java:969)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.EngineImpl.evalAttributeExpression(EngineImpl.java:895)
>
> at
> org.eclipse.emf.henshin.interpreter.info.VariableInfo.createConstraints(VariableInfo.java:188)
>
> at
> org.eclipse.emf.henshin.interpreter.info.VariableInfo.createVariables(VariableInfo.java:111)
>
> at
> org.eclipse.emf.henshin.interpreter.info.VariableInfo.<init>(VariableInfo.java:77)
>
> at
> org.eclipse.emf.henshin.interpreter.info.RuleInfo.<init>(RuleInfo.java:26)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.EngineImpl.getRuleInfo(EngineImpl.java:703)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.EngineImpl$MatchFinder.<init>(EngineImpl.java:305)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.EngineImpl$MatchGenerator.iterator(EngineImpl.java:251)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.RuleApplicationImpl.execute(RuleApplicationImpl.java:89)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl.executeRule(UnitApplicationImpl.java:175)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl.doExecute(UnitApplicationImpl.java:99)
>
> at
> org.eclipse.emf.henshin.interpreter.impl.UnitApplicationImpl.execute(UnitApplicationImpl.java:89)
>
> at run.Main.execute(Main.java:55)
>
>
>
> The code fragment we use to execute the henshin transformation is given
> here:
>
>
> HenshinResourceSet resourceSet = new HenshinResourceSet(ResourcePath);
>
> Module module = resourceSet.getModule("unit1.henshin", false);
>
> Resource r = resourceSet.getResource("Test.ecore");
>
> EObject eObject = r.getContents().get(0);
>
> if (eObject instanceof EPackage) {
>
>     EPackage p = (EPackage)eObject;
>
>     resourceSet.getPackageRegistry().put(p.getNsURI(), p);
>
> }
>
> EGraph graph = new EGraphImpl(resourceSet.getResource("base.xmi"));
>
> Engine engine = new EngineImpl();
>
> UnitApplication app = new UnitApplicationImpl(engine);
>
> app.setEGraph(graph);
>
> app.setUnit(module.getUnit("r1"));
>
> app.execute(null);
>
> Resource rs=resourceSet.getResource("base.xmi");
>
> rs.setModified(true);
>
> rs.getContents().clear();
>
> for(int i=0;i<graph.getRoots().size();i++){
>
> rs.getContents().add(graph.getRoots().get(i));
>
> }
>
> rs.save(null);
>
>
> Greetings,
>
>
>
> _______________________________________________
> henshin-dev mailing list
> henshin-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe
> from this list, visit
> https://dev.eclipse.org/mailman/listinfo/henshin-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dev.eclipse.org/mailman/private/henshin-dev/attachments/20141224/2690d73b/attachment.html>

------------------------------

_______________________________________________
henshin-dev mailing list
henshin-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/henshin-dev

End of henshin-dev Digest, Vol 56, Issue 3
******************************************


Back to the top