但是如果我不知道我想要获得的属性的名称怎么办?比方说,基于设计,模型由开发人员具有一些固定的属性,同时还有用户可以动态设置的特性。
因此,目前我使用geteallStructuralFeature()
并通过get()
使用索引来访问由用户创建的属性,因为我知道我得到的列表将以模型的固定属性作为它的第一个元素,以索引0开头。但我发现这个解决方案不明确而且效率低。也有的时候,说我想工作,不适合。
例如:iemfeditProperty prop=emfeditProperties.list(editingDomain,emfModelPackage.Literals.emfModel.GeteAllStructuralFeatures().Get(X));
每一次的帮助都将得到感激。
我最近一直在处理一个类似的案例,我首先尝试定义一个eStructuralFeature
来精确地访问我需要的对象的设置/属性。
但是,如果您研究一下ECore中的内部工作方式,就会发现这是不可能的,因为索引绑定到在运行时为特定上下文(即eClass
实例)创建的eStructuralFeature
对象的对象标识。
然后,我的方法是检查eClass.geteallStructuralFeatures
提出的特性,或者对这些特性进行迭代,并检查eObject.eget
返回的对象,以了解这个特性(其中eClass eClass=eObject.eClass()
)。
示例:在一个UML概要文件中,我定义了一个名为“bean”的UML原型,其属性名为FactoryEntity
。该属性将引用一个UML类,其原型“Entity”与这个bean最接近,并且将为其生成一个静态工厂方法。
在模型中,我将有一个UML类被类型为Bean,一个类型为Entity。
然后,对于类型为“bean”的类,我将为概要文件中定义的属性/属性factoryentity
设置一个值。
final EObject eObject = (EObject) holdingClass.getValue(stereotype, stereoTypePropertyName);
final EList<EStructuralFeature> allEStructFeats = eObject.eClass().getEAllStructuralFeatures();
for(EStructuralFeature esf : allEStructFeats)
{
final Object o = eobject.eGet(esf);
if(o instanceof org.eclipse.uml2.uml.Class)
{
return (org.eclipse.uml2.uml.Class) o;
}
}
我通过Xtext创建了一个DSL,现在需要将编辑器中创建的模型转换为另一个模型。我认为最直接的方法是使用某种M2M转换框架,但我需要访问文本文件后面的模型。问题:如何获得模型的引用?
我有一个Java方法,它被传递一个字符串和一个EMF eObject。字符串是eObject属性的名称。例如,如果向它传递“foo”和EObject eobj,那么它将需要访问eobj.getFoo()。我知道如何从EAttibute的featureID中获取它的值,但似乎找不到通过属性名获取它的方法。这有可能吗?
我有两个基于同一ecore模型的EMF实例版本。我需要以以下格式准备一个从v1到v2更改的事物列表
不同的业务应用场景,会有完全不同的非法终端控制策略,常见的限制策略有终端 IP 、访问域名端口,这些可以通过防火墙等很多成熟手段完成。可也有一些特定限制策略,例如特定 cookie、url、location,甚至请求 body 包含有特殊内容,这种情况下普通防火墙就比较难限制。 Nginx 是 HTTP 7 层协议的实现者,相对普通防火墙从通讯协议有自己的弱势,同等的配置下的性能表现绝对远不如防火
我想用Java代码生成EMF模型。例如,我想创建一个新的Ecore建模项目,然后构建一个简单的模型,就像很多教程(比如vogella教程)中看到的那样。但我不想用GUI手工完成。我想学习如何使用EMF-Ecore-API用Java代码创建模型。 我试着找关于这个话题的教程。但令我失望的是,我找不到太多关于这个话题的资料。我能找到的唯一东西是一些代码片段,用来按代码加载和修改现有模型。但没有关于创建
我有一个基于emf的模型。在模型中,我有一个feature类,我可以向这些feature添加约束。例如,特性A“暗示”特性B。我正在尝试使用emf命令堆栈向特性添加约束。它将约束添加到特征中,但缺少属性。我的代码如下