2015-05-14 1 views
0

Мне нужно работать с некоторым кодом эдс, не имея понятия, как это работает. В коде используется EcoreUtil.copy (...) для клонирования классов. Я добавил EClass к классу я создал так:EclassImpl setEPackage()

EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass(); 
    System.out.println(c.getEPackage().getEFactoryInstance()); 

А также отменяют eStaticClass(), как это:

@Override 
    protected EClass eStaticClass() {  
     EClassImpl c = (EClassImpl)EcoreFactory.eINSTANCE.createEClass(); 
     return c; 
    } 

Теперь у меня есть проблема, что копия рутинные пытается использовать:

eClass.getEPackage().getEFactoryInstance().create(eClass); 

Что возвращает исключение nullpointer, поскольку getEPackage() возвращает значение null. К сожалению, для EPackage нет настроителя, так как я его установил?

ответ

0

мне удалось решить это сам, вот мое решение в случае, если кто-либо когда-либо приходит через это:

EPackageImpl epi = (EPackageImpl)EcoreFactory.eINSTANCE.createEPackage(); 
    c.eBasicSetContainer(epi, EcorePackage.ECLASSIFIER__EPACKAGE, null); 
2

была такая же проблема. См. В статье http://emfjson.org/docs/, как они используют API в качестве примера.

samplePackage 
.getEClassifiers() 
.add(userClass); 

Это добавит класс в пакет и наоборот.

+0

Спасибо, если я когда-нибудь встретим это снова, я дам вашему решению выстрел, кажется, –