8134111: Unmarshaller unmarshalls XML element which doesn't have the expected namespace

Reviewed-by: lancea
This commit is contained in:
Aleksei Efimov 2016-04-01 12:34:02 +03:00
parent ffd8b1d718
commit ea3318a1cb
4 changed files with 234 additions and 0 deletions
jdk/test/javax/xml/bind/marshal/8134111

@ -0,0 +1,67 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* @test
* @bug 8134111
* @summary test that elements without namespace is ignored by unmarshaller
* when elementFormDefault is set to QUALIFIED.
* @compile testTypes/package-info.java testTypes/Root.java
* testTypes/WhenType.java testTypes/ObjectFactory.java
* @modules java.xml.bind
* @run testng/othervm UnmarshalTest
*/
import java.io.StringReader;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import org.testng.annotations.Test;
import static org.testng.Assert.assertNull;
import org.xml.sax.InputSource;
import testTypes.Root;
public class UnmarshalTest {
@Test
public void unmarshalUnexpectedNsTest() throws Exception {
JAXBContext context;
Unmarshaller unm;
// Create JAXB context from testTypes package
context = JAXBContext.newInstance("testTypes");
// Create unmarshaller from JAXB context
unm = context.createUnmarshaller();
// Unmarshall xml document with unqualified dtime element
Root r = (Root) unm.unmarshal(new InputSource(new StringReader(DOC)));
// Print dtime value and check if it is null
System.out.println("dtime is:"+r.getWhen().getDtime());
assertNull(r.getWhen().getDtime());
}
//Xml document to unmarshall with unqualified dtime element
private final String DOC =
"<tns:root xmlns:tns=\"http://www.example.org/testNamespace/\">" +
"<tns:when>" +
"<dtime>2015-06-24T13:16:14.933-04:00</dtime>" +
"</tns:when>" +
"</tns:root>";
}

@ -0,0 +1,70 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package testTypes;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {"when"})
@XmlRootElement(name = "root",
namespace = "http://www.example.org/testNamespace/")
public class Root {
@XmlElement(required = true,
namespace = "http://www.example.org/testNamespace/")
protected WhenType when;
/**
* Gets the value of the when property.
*
* @return
* possible object is
* {@link WhenType }
*
*/
public WhenType getWhen() {
return when;
}
/**
* Sets the value of the when property.
*
* @param value
* allowed object is
* {@link WhenType }
*
*/
public void setWhen(WhenType value) {
this.when = value;
}
}

@ -0,0 +1,70 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package testTypes;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* <p>Java class for WhenType complex type.
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "WhenType",
propOrder = {"dtime"})
public class WhenType {
@XmlElement(required = true)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar dtime;
/**
* Gets the value of the dtime property.
*
* @return
* possible object is
* {@link XMLGregorianCalendar }
*
*/
public XMLGregorianCalendar getDtime() {
return dtime;
}
/**
* Sets the value of the dtime property.
*
* @param value
* allowed object is
* {@link XMLGregorianCalendar }
*
*/
public void setDtime(XMLGregorianCalendar value) {
this.dtime = value;
}
}

@ -0,0 +1,27 @@
/*
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://www.example.org/testNamespace/",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package testTypes;