Fix internal data ordering. Close #166.

This commit is contained in:
etj 2016-04-08 17:59:37 +02:00
parent db5d949e71
commit 5447c06dbc
2 changed files with 31 additions and 28 deletions

View File

@ -1,7 +1,7 @@
/*
* GeoServer-Manager - Simple Manager Library for GeoServer
*
* Copyright (C) 2007,2011 GeoSolutions S.A.S.
* Copyright (C) 2007-2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
@ -26,7 +26,6 @@
package it.geosolutions.geoserver.rest.encoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@ -37,6 +36,7 @@ import it.geosolutions.geoserver.rest.encoder.identifier.GSIdentifierInfoEncoder
import it.geosolutions.geoserver.rest.encoder.identifier.IdentifierInfo;
import it.geosolutions.geoserver.rest.encoder.utils.NestedElementEncoder;
import it.geosolutions.geoserver.rest.encoder.utils.XmlElement;
import java.util.LinkedHashMap;
/**
* Layer encoder for Geoserver = 2.1
@ -102,7 +102,7 @@ public class GSLayerEncoder21 extends GSLayerEncoder {
*/
public void addAuthorityURL(GSAuthorityURLInfoEncoder authorityURLInfo){
if(authorityURLList == null){
authorityURLList = new HashMap<String,String>();
authorityURLList = new LinkedHashMap<String,String>();
}
authorityURLList.put(authorityURLInfo.getHref(), authorityURLInfo.getName());
String jsonStr = "";
@ -152,7 +152,7 @@ public class GSLayerEncoder21 extends GSLayerEncoder {
*/
public void addIdentifier(GSIdentifierInfoEncoder identifierInfo){
if(identifierList == null){
identifierList = new HashMap<String,List<String>>();
identifierList = new LinkedHashMap<String,List<String>>();
}
String authority = identifierInfo.getAuthority();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2007 - 2011 GeoSolutions S.A.S.
* Copyright (C) 2007-2016 GeoSolutions S.A.S.
* http://www.geo-solutions.it
*
* GPLv3 + Classpath exception
@ -19,7 +19,6 @@
*/
package it.geosolutions.geoserver.rest.encoder;
import java.util.ArrayList;
import java.util.List;
import it.geosolutions.geoserver.rest.encoder.authorityurl.AuthorityURLInfo;
@ -46,16 +45,21 @@ public class GSLayerEncoder21Test {
public void setup() {
layerEncoder = new GSLayerEncoder21();
layerEncoder.setAdvertised(true);
layerEncoder.addAuthorityURL(new GSAuthorityURLInfoEncoder(
layerEncoder.addAuthorityURL(
new GSAuthorityURLInfoEncoder(
"authority1", "http://www.authority1.org"));
layerEncoder.addIdentifier(new GSIdentifierInfoEncoder("authority1",
"identifier1"));
layerEncoder.addAuthorityURL(new GSAuthorityURLInfoEncoder(
layerEncoder.addIdentifier(
new GSIdentifierInfoEncoder(
"authority1", "identifier1"));
layerEncoder.addAuthorityURL(
new GSAuthorityURLInfoEncoder(
"authority2", "http://www.authority2.org"));
layerEncoder.addIdentifier(new GSIdentifierInfoEncoder("authority2",
"identifier2"));
layerEncoder.addIdentifier(new GSIdentifierInfoEncoder("authority2",
"additionalId"));
layerEncoder.addIdentifier(
new GSIdentifierInfoEncoder(
"authority2", "identifier2"));
layerEncoder.addIdentifier(
new GSIdentifierInfoEncoder(
"authority2", "additionalId"));
}
@ -97,34 +101,33 @@ public class GSLayerEncoder21Test {
}else if(key.matches("identifiers")){
String jsonStr = el.getValue();
jsonStr = jsonStr.substring(2);
jsonStr = jsonStr.substring(0,
jsonStr.length() - 3);
jsonStr = jsonStr.substring(0, jsonStr.length() - 3);
String[] items = jsonStr.split("\\}(,)\\{");
String[] props1 = items[0].split(",");
String[] kvp1_1 = props1[0].split("\":");
String[] kvp1_2 = props1[1].split("\":");
Assert.assertEquals(IdentifierInfo.authority.name(), kvp1_1[0].replace("\"", ""));
Assert.assertEquals("authority2", kvp1_1[1].replace("\"", ""));
Assert.assertEquals(IdentifierInfo.identifier.name(), kvp1_2[0].replace("\"", ""));
Assert.assertEquals("identifier2", kvp1_2[1].replace("\"", ""));
Assert.assertEquals("idx0", IdentifierInfo.authority.name(), kvp1_1[0].replace("\"", ""));
Assert.assertEquals("idx0", "authority1", kvp1_1[1].replace("\"", ""));
Assert.assertEquals("idx0", IdentifierInfo.identifier.name(), kvp1_2[0].replace("\"", ""));
Assert.assertEquals("idx0", "identifier1", kvp1_2[1].replace("\"", ""));
String[] props2 = items[1].split(",");
String[] kvp2_1 = props2[0].split("\":");
String[] kvp2_2 = props2[1].split("\":");
Assert.assertEquals(IdentifierInfo.authority.name(), kvp2_1[0].replace("\"", ""));
Assert.assertEquals("authority2", kvp2_1[1].replace("\"", ""));
Assert.assertEquals(IdentifierInfo.identifier.name(), kvp2_2[0].replace("\"", ""));
Assert.assertEquals("additionalId", kvp2_2[1].replace("\"", ""));
Assert.assertEquals("idx1", IdentifierInfo.authority.name(), kvp2_1[0].replace("\"", ""));
Assert.assertEquals("idx1", "authority2", kvp2_1[1].replace("\"", ""));
Assert.assertEquals("idx1", IdentifierInfo.identifier.name(), kvp2_2[0].replace("\"", ""));
Assert.assertEquals("idx1", "identifier2", kvp2_2[1].replace("\"", ""));
String[] props3 = items[2].split(",");
String[] kvp3_1 = props3[0].split("\":");
String[] kvp3_2 = props3[1].split("\":");
Assert.assertEquals(IdentifierInfo.authority.name(), kvp3_1[0].replace("\"", ""));
Assert.assertEquals("authority1", kvp3_1[1].replace("\"", ""));
Assert.assertEquals(IdentifierInfo.identifier.name(), kvp3_2[0].replace("\"", ""));
Assert.assertEquals("identifier1", kvp3_2[1].replace("\"", ""));
Assert.assertEquals("idx2", IdentifierInfo.authority.name(), kvp3_1[0].replace("\"", ""));
Assert.assertEquals("idx2", "authority2", kvp3_1[1].replace("\"", ""));
Assert.assertEquals("idx2", IdentifierInfo.identifier.name(), kvp3_2[0].replace("\"", ""));
Assert.assertEquals("idx2", "additionalId", kvp3_2[1].replace("\"", ""));
}
}