Adding some serious enhancements to the WMC format. With this, OL map and layer objects can be created from WMC context objects and vice versa. Thanks for the great patch bbinet. r=me (closes #2251)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9733 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+26
-19
@@ -6,9 +6,10 @@
|
||||
function test_write_wmc_StyleList(t) {
|
||||
t.plan(3);
|
||||
|
||||
var layer, got, expected;
|
||||
var layer, layerContext, got, expected;
|
||||
|
||||
var parser = new OpenLayers.Format.WMC.v1();
|
||||
var format = new OpenLayers.Format.WMC();
|
||||
var parser = format.getParser("1");
|
||||
var name = "test";
|
||||
var url = "http://foo";
|
||||
|
||||
@@ -16,7 +17,8 @@
|
||||
layer = new OpenLayers.Layer.WMS(name, url, {
|
||||
styles: "mystyle"
|
||||
});
|
||||
got = parser.write_wmc_StyleList(layer);
|
||||
layerContext = format.layerToContext(layer);
|
||||
got = parser.write_wmc_StyleList(layerContext);
|
||||
expected =
|
||||
"<StyleList xmlns='http://www.opengis.net/context'>" +
|
||||
"<Style current='1'>" +
|
||||
@@ -31,7 +33,8 @@
|
||||
layer = new OpenLayers.Layer.WMS(name, url, {
|
||||
sld: "http://linked.sld"
|
||||
});
|
||||
got = parser.write_wmc_StyleList(layer);
|
||||
layerContext = format.layerToContext(layer);
|
||||
got = parser.write_wmc_StyleList(layerContext);
|
||||
expected =
|
||||
"<StyleList xmlns='http://www.opengis.net/context'>" +
|
||||
"<Style current='1'>" +
|
||||
@@ -39,6 +42,7 @@
|
||||
"<OnlineResource xmlns:xlink='http://www.w3.org/1999/xlink' "+
|
||||
"xlink:type='simple' " +
|
||||
"xlink:href='http://linked.sld' />" +
|
||||
"<Name></Name><Title>Default</Title>" +
|
||||
"</SLD>" +
|
||||
"</Style>" +
|
||||
"</StyleList>";
|
||||
@@ -78,7 +82,8 @@
|
||||
"</sld:StyledLayerDescriptor>"
|
||||
});
|
||||
|
||||
got = parser.write_wmc_StyleList(layer);
|
||||
layerContext = format.layerToContext(layer);
|
||||
got = parser.write_wmc_StyleList(layerContext);
|
||||
expected =
|
||||
"<StyleList xmlns='http://www.opengis.net/context'>" +
|
||||
"<Style current='1'>" +
|
||||
@@ -110,6 +115,7 @@
|
||||
"</sld:UserStyle>" +
|
||||
"</sld:NamedLayer>" +
|
||||
"</sld:StyledLayerDescriptor>" +
|
||||
"<Name></Name><Title>Default</Title>" +
|
||||
"</SLD>" +
|
||||
"</Style>" +
|
||||
"</StyleList>";
|
||||
@@ -122,8 +128,9 @@
|
||||
t.plan(3);
|
||||
|
||||
var xml = new OpenLayers.Format.XML();
|
||||
var parser = new OpenLayers.Format.WMC.v1();
|
||||
var node, text, layerInfo;
|
||||
var format = new OpenLayers.Format.WMC();
|
||||
var parser = format.getParser("1");
|
||||
var node, text, layerContext, layer;
|
||||
|
||||
// test named style
|
||||
text =
|
||||
@@ -133,12 +140,12 @@
|
||||
"</Style>" +
|
||||
"</StyleList>";
|
||||
node = xml.read(text).documentElement;
|
||||
layerInfo = {
|
||||
params: {},
|
||||
layerContext = {
|
||||
styles: []
|
||||
};
|
||||
parser.read_wmc_StyleList(layerInfo, node);
|
||||
t.eq(layerInfo.params.styles, "mystyle", "named style correctly read");
|
||||
parser.read_wmc_StyleList(layerContext, node);
|
||||
layer = format.getLayerFromContext(layerContext);
|
||||
t.eq(layer.params.STYLES, "mystyle", "named style correctly read");
|
||||
|
||||
// test linked style
|
||||
text =
|
||||
@@ -152,12 +159,12 @@
|
||||
"</Style>" +
|
||||
"</StyleList>";
|
||||
node = xml.read(text).documentElement;
|
||||
layerInfo = {
|
||||
params: {},
|
||||
layerContext = {
|
||||
styles: []
|
||||
};
|
||||
parser.read_wmc_StyleList(layerInfo, node);
|
||||
t.eq(layerInfo.params.sld, "http://linked.sld", "linked style correctly read");
|
||||
parser.read_wmc_StyleList(layerContext, node);
|
||||
layer = format.getLayerFromContext(layerContext);
|
||||
t.eq(layer.params.SLD, "http://linked.sld", "linked style correctly read");
|
||||
|
||||
// test inline style
|
||||
// any valid xml under the StyledLayerDescriptor node should make the
|
||||
@@ -176,11 +183,11 @@
|
||||
"</Style>" +
|
||||
"</StyleList>";
|
||||
node = xml.read(text).documentElement;
|
||||
layerInfo = {
|
||||
params: {},
|
||||
layerContext = {
|
||||
styles: []
|
||||
};
|
||||
parser.read_wmc_StyleList(layerInfo, node);
|
||||
parser.read_wmc_StyleList(layerContext, node);
|
||||
layer = format.getLayerFromContext(layerContext);
|
||||
var expected =
|
||||
"<sld:StyledLayerDescriptor version='1.0.0' " +
|
||||
"xmlns:sld='http://www.opengis.net/sld' " +
|
||||
@@ -188,7 +195,7 @@
|
||||
"xsi:schemaLocation='http://www.opengis.net/sld http://schemas.opengeospatial.net/sld/1.0.0/StyledLayerDescriptor.xsd'>" +
|
||||
"<foo xmlns='http://www.opengis.net/context'>bar<more/></foo>" +
|
||||
"</sld:StyledLayerDescriptor>";
|
||||
t.xml_eq(layerInfo.params.sld_body, expected, "inline style correctly read");
|
||||
t.xml_eq(layer.params.SLD_BODY, expected, "inline style correctly read");
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -12,8 +12,9 @@
|
||||
t.plan(12);
|
||||
|
||||
// direct construction of a parser for a unit test
|
||||
var wmc = new OpenLayers.Format.WMC.v1_1_0();
|
||||
var sldNS = wmc.namespaces["sld"];
|
||||
var format = new OpenLayers.Format.WMC();
|
||||
var parser = format.getParser("1_1_0");
|
||||
var sldNS = parser.namespaces["sld"];
|
||||
|
||||
// test that Min/MaxScaleDenominator is not written out when no
|
||||
// resolution related options are set
|
||||
@@ -21,10 +22,11 @@
|
||||
"test", "http://foo", {},
|
||||
{maxExtent: new OpenLayers.Bounds(1, 2, 3, 4)}
|
||||
);
|
||||
var node = wmc.write_wmc_Layer(layer);
|
||||
var minList = wmc.getElementsByTagNameNS(node, sldNS, "MinScaleDenominator");
|
||||
var layerContext = format.layerToContext(layer);
|
||||
var node = parser.write_wmc_Layer(layerContext);
|
||||
var minList = parser.getElementsByTagNameNS(node, sldNS, "MinScaleDenominator");
|
||||
t.eq(minList.length, 0, "(none) node not written with MinScaleDenominator");
|
||||
var maxList = wmc.getElementsByTagNameNS(node, sldNS, "MaxScaleDenominator");
|
||||
var maxList = parser.getElementsByTagNameNS(node, sldNS, "MaxScaleDenominator");
|
||||
t.eq(maxList.length, 0, "(none) node not written with MaxScaleDenominator");
|
||||
|
||||
// test that Min/MaxScaleDenominator is written out for explicit
|
||||
@@ -35,15 +37,16 @@
|
||||
);
|
||||
layer.minScale = Math.random();
|
||||
layer.maxScale = Math.random();
|
||||
sldNS = wmc.namespaces["sld"];
|
||||
node = wmc.write_wmc_Layer(layer);
|
||||
minList = wmc.getElementsByTagNameNS(node, sldNS, "MinScaleDenominator");
|
||||
sldNS = parser.namespaces["sld"];
|
||||
layerContext = format.layerToContext(layer);
|
||||
node = parser.write_wmc_Layer(layerContext);
|
||||
minList = parser.getElementsByTagNameNS(node, sldNS, "MinScaleDenominator");
|
||||
t.eq(minList.length, 1, "(resolutions) node written with MinScaleDenominator");
|
||||
t.eq(layer.maxScale.toPrecision(16), wmc.getChildValue(minList[0]),
|
||||
t.eq(layer.maxScale.toPrecision(16), parser.getChildValue(minList[0]),
|
||||
"(resolutions) node written with correct MinScaleDenominator value");
|
||||
maxList = wmc.getElementsByTagNameNS(node, sldNS, "MaxScaleDenominator");
|
||||
maxList = parser.getElementsByTagNameNS(node, sldNS, "MaxScaleDenominator");
|
||||
t.eq(maxList.length, 1, "(resolutions) node written with MaxScaleDenominator");
|
||||
t.eq(layer.minScale.toPrecision(16), wmc.getChildValue(maxList[0]),
|
||||
t.eq(layer.minScale.toPrecision(16), parser.getChildValue(maxList[0]),
|
||||
"(resolutions) node written with correct MaxScaleDenominator value");
|
||||
|
||||
layer = new OpenLayers.Layer.WMS(
|
||||
@@ -52,19 +55,21 @@
|
||||
);
|
||||
layer.minScale = Math.random();
|
||||
layer.maxScale = Math.random();
|
||||
node = wmc.write_wmc_Layer(layer);
|
||||
minList = wmc.getElementsByTagNameNS(node, sldNS, "MinScaleDenominator");
|
||||
layerContext = format.layerToContext(layer);
|
||||
node = parser.write_wmc_Layer(layerContext);
|
||||
minList = parser.getElementsByTagNameNS(node, sldNS, "MinScaleDenominator");
|
||||
var f = new OpenLayers.Format.XML();
|
||||
t.eq(minList.length, 1, "(scales) node written with MinScaleDenominator");
|
||||
t.eq(layer.maxScale.toPrecision(16), wmc.getChildValue(minList[0]),
|
||||
t.eq(layer.maxScale.toPrecision(16), parser.getChildValue(minList[0]),
|
||||
"(scales) node written with correct MinScaleDenominator value");
|
||||
maxList = wmc.getElementsByTagNameNS(node, sldNS, "MaxScaleDenominator");
|
||||
maxList = parser.getElementsByTagNameNS(node, sldNS, "MaxScaleDenominator");
|
||||
t.eq(maxList.length, 1, "(scales) node written with MaxScaleDenominator");
|
||||
t.eq(layer.minScale.toPrecision(16), wmc.getChildValue(maxList[0]),
|
||||
t.eq(layer.minScale.toPrecision(16), parser.getChildValue(maxList[0]),
|
||||
"(scales) node written with correct MaxScaleDenominator value");
|
||||
|
||||
layer.metadataURL = 'http://foo';
|
||||
node = wmc.write_wmc_Layer(layer);
|
||||
layerContext = format.layerToContext(layer);
|
||||
node = parser.write_wmc_Layer(layerContext);
|
||||
t.eq(node.childNodes[3].localName || node.childNodes[3].nodeName.split(":").pop(),
|
||||
'MetadataURL', "MinScaleDenominator is written after MetadataURL, so third node should be MetadataURL");
|
||||
t.eq(node.childNodes[4].localName || node.childNodes[4].nodeName.split(":").pop(),
|
||||
|
||||
Reference in New Issue
Block a user