Hello Heiko,
with Xtext 1.0 a new default behavour for Qualified Names was introduced.
to adapt your grammar to the new behaviour the grammar has to look like this:
ModelPart:
elements+=Datamodule*
types+=Type*
;
Datamodule:
'datamodule' name=ID '{' entities+=Entity* '}';
Entity:
'entity' name=ID ('extends' extends=[Entity|FQN])?
'{' properties+=Property* '}';
Property:
'property' name=ID ':' type=[Type];
Type:
'type' name=ID ('extends' extends=[Type])?;
FQN: ID ("." ID)*;
the model then will look like this
datamodule m1 {
entity test1 {
property p1: String
}
entity test1_1 extends test1 {
property p2: String
}
}
datamodule m2 {
entity test2_1 extends m1.test1 {
property p2: Integer
}
}
(note the full qualified reference m1.test1.
Or you customize the used IQualifiedNameProvider by using the old behavoiurous SimpleNameProvider
public class MyDslRuntimeModule extends org.xtext.example.mydsl.AbstractMyDslRuntimeModule {
@Override
public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
return SimpleNameProvider.class;
}
}
but this may lead to problems with your duplicate p2 property since the name has to be unique.
you have to switch off duplicates checks too.
//composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
or you don't use simplesameprovider but rather change the default provider
public class MyQNP extends DefaultDeclarativeQualifiedNameProvider {
public String qualifiedName(Entity entity) {
return entity.getName();
}
}
public class MyDslRuntimeModule extends org.xtext.example.mydsl.AbstractMyDslRuntimeModule {
@Override
public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
return MyQNP.class;
}
}
For more background have a look at the docs
~Christian