Skip to content

Commit

Permalink
Xtf24Reader: wrong xmlns for extended attributes (claeis/ilivalidator…
Browse files Browse the repository at this point in the history
  • Loading branch information
claeis committed Mar 23, 2020
1 parent 347777f commit d68f210
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 14 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ compileJava.options.encoding = 'US-ASCII'
dependencies {
compile group: 'ch.ehi', name: 'ehibasics', version: '1.2.0'
compile group: 'ch.interlis', name: 'iox-api', version: '1.0.3'
compile group: 'ch.interlis', name: 'ili2c-core', version: '4.7.10'
compile group: 'ch.interlis', name: 'ili2c-core', version: '5.0.7+'
compile group: 'antlr', name: 'antlr', version: '2.7.6'
compile group: 'com.vividsolutions', name: 'jts-core', version: '1.14.0'
compile group: 'net.iharder', name: 'base64', version: '2.3.9'
Expand All @@ -31,7 +31,7 @@ dependencies {
testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '1.3'
testCompile group: 'org.xmlunit',name: 'xmlunit-matchers',version: '2.5.1'
testCompile group: 'org.xmlunit', name: 'xmlunit-core',version: '2.5.1'
testCompile (group: 'ch.interlis', name: 'ili2c-tool', version: '4.7.10'){
testCompile (group: 'ch.interlis', name: 'ili2c-tool', version: '5.0.7+'){
exclude group: 'ch.interlis', module: 'iox-ili'
}
deployerJars "org.apache.maven.wagon:wagon-ftp:3.3.3"
Expand Down
2 changes: 2 additions & 0 deletions doc/CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ LATEST
-----------------------------
- Validator: ArrayIndexOutOfBoundsException with n-ary association (ilivalidator#232)
- Wkb2iox: support EMPTY geometries (ili2db#338)
- Xtf24Reader: wrong xmlns for extended attributes (ilivalidator#235)
- ili2c-5.0.7-SNAPSHOT

iox-ili 1.20.17 (2020-03-01)
-----------------------------
Expand Down
52 changes: 40 additions & 12 deletions src/main/java/ch/interlis/iom_j/xtf/Xtf24Reader.java
Original file line number Diff line number Diff line change
Expand Up @@ -851,27 +851,55 @@ private void setupNameMapping(){
// iliProperties
Iterator<ViewableTransferElement> elementIter=aClass.getAttributesAndRoles2();
transferElements=new HashMap<QName, Element>();
Element element=null;
while (elementIter.hasNext()){
ViewableTransferElement obj = (ViewableTransferElement) elementIter.next();
if(obj.obj instanceof Element){
element=(Element) obj.obj;
String elementName=element.getName();
Model modelOfElement=(Model)element.getContainer(Model.class);
String elementNs=modelNameSpace;
if(modelOfElement!=model) {
elementNs=getModelXmlNamespace(modelOfElement);
}
QName eleQName=new QName(elementNs, elementName);
transferElements.put(eleQName, element);
}
Element element=(Element) obj.obj;
Element rootEle=getRootEle(element);
String elementNs=modelNameSpace;
Model modelOfElement=(Model)rootEle.getContainer(Model.class);
if(modelOfElement!=model) {
elementNs=getModelXmlNamespace(modelOfElement);
}
QName eleQName=new QName(elementNs, element.getName());
transferElements.put(eleQName, element);
}
iliProperties.put(aClass, transferElements);
}
}
}
}

private Element getRootEle(Element element) {
Element rootEle=null;
if(element instanceof RoleDef){
RoleDef role=(RoleDef)element;
rootEle=role.getRootExtending();
}else if(element instanceof AttributeDef){
AttributeDef attr=(AttributeDef)element;
rootEle=attr.getRootExtending();
}else {
throw new IllegalStateException("unexpected class "+element.getClass().getName());
}
if(rootEle!=null) {
return rootEle;
}
return element;
}

private AttributeDef getRootExtending(AttributeDef attr) {
AttributeDef ret=(AttributeDef)attr.getExtending();
if(ret!=null){
while(true){
Element ret1=ret.getExtending();
if(ret1==null){
break;
}
ret=(AttributeDef)ret1;
}
}
return ret;
}

private String getModelXmlNamespace(Model model) {
String modelNameSpace=model.getXmlns();
if(modelNameSpace==null){
Expand Down

0 comments on commit d68f210

Please sign in to comment.