| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.apache.cxf.xjc.dv; |
| |
| import java.io.StringWriter; |
| import java.lang.reflect.Field; |
| import java.math.BigDecimal; |
| import java.math.BigInteger; |
| |
| import javax.xml.XMLConstants; |
| import javax.xml.bind.DatatypeConverter; |
| import javax.xml.bind.JAXBContext; |
| import javax.xml.bind.JAXBElement; |
| import javax.xml.bind.Marshaller; |
| import javax.xml.bind.annotation.XmlElement; |
| import javax.xml.bind.annotation.adapters.HexBinaryAdapter; |
| import javax.xml.namespace.QName; |
| import javax.xml.validation.Schema; |
| import javax.xml.validation.SchemaFactory; |
| |
| import org.apache.cxf.configuration.foo.Foo; |
| import org.apache.ws.jaxme.impl.DatatypeConverterImpl; |
| |
| import org.junit.Assert; |
| import org.junit.Test; |
| |
| |
| |
| public class DefaultValueTest extends Assert { |
| |
| @Test |
| public void testFooDefaultValues() throws Exception { |
| |
| DatatypeConverter.setDatatypeConverter(new DatatypeConverterImpl()); |
| |
| Foo foo = new org.apache.cxf.configuration.foo.ObjectFactory().createFoo(); |
| |
| // verify default values |
| checkCXF3131(foo); |
| |
| assertAttributeValuesWithoutDefault(foo); |
| assertDefaultAttributeValues(foo); |
| assertDefaultElementValues(foo); |
| assertSchemaValid(foo); |
| } |
| |
| private void checkCXF3131(Foo foo) throws Exception { |
| Field f = foo.getClass().getDeclaredField("point"); |
| assertNotNull(f.getAnnotation(XmlElement.class)); |
| } |
| |
| private void assertDefaultAttributeValues(Foo foo) { |
| assertEquals("Unexpected value for attribute stringAttr", |
| "hello", foo.getStringAttr()); |
| assertTrue("Unexpected value for attribute booleanAttr", |
| foo.isBooleanAttr()); |
| assertEquals("Unexpected value for attribute integerAttr", |
| new BigInteger("111"), foo.getIntegerAttr()); |
| assertEquals("Unexpected value for attribute intAttr", |
| 112, foo.getIntAttr()); |
| assertEquals("Unexpected value for attribute longAttr", |
| 113L, foo.getLongAttr()); |
| assertEquals("Unexpected value for attribute shortAttr", |
| 114, foo.getShortAttr()); |
| assertEquals("Unexpected value for attribute decimalAttr", |
| new BigDecimal("115"), foo.getDecimalAttr()); |
| assertEquals("Unexpected value for attribute floatAttr", |
| new Float(116F), new Float(foo.getFloatAttr())); |
| assertEquals("Unexpected value for attribute doubleAttr", |
| new Double(117D), new Double(foo.getDoubleAttr())); |
| assertEquals("Unexpected value for attribute byteAttr", |
| 118, foo.getByteAttr()); |
| |
| byte[] expected = DatatypeConverter.parseBase64Binary("wxyz"); |
| byte[] effective = foo.getBase64BinaryAttr(); |
| |
| assertEquals("Unexpected value for attribute base64BinaryAttr", expected.length, effective.length); |
| for (int i = 0; i < expected.length; i++) { |
| assertEquals("Unexpected value for attribute base64BinaryAttr", expected[i], effective[i]); |
| } |
| |
| expected = new HexBinaryAdapter().unmarshal("aaaa"); |
| effective = foo.getHexBinaryAttr(); |
| assertEquals("Unexpected value for attribute hexBinaryAttr", expected.length, effective.length); |
| for (int i = 0; i < expected.length; i++) { |
| assertEquals("Unexpected value for attribute hexBinaryAttr", expected[i], effective[i]); |
| } |
| |
| QName qn = foo.getQnameAttr(); |
| assertEquals("Unexpected value for attribute qnameAttr", |
| "http://www.w3.org/2001/XMLSchema", qn.getNamespaceURI()); |
| assertEquals("Unexpected value for attribute qnameAttr", |
| "schema", qn.getLocalPart()); |
| |
| assertEquals("Unexpected value for attribute unsignedIntAttr", |
| 119L, foo.getUnsignedIntAttr()); |
| assertEquals("Unexpected value for attribute unsignedShortAttr", |
| 120, foo.getUnsignedShortAttr()); |
| assertEquals("Unexpected value for attribute unsignedByteAttr", |
| 121, foo.getUnsignedByteAttr()); |
| |
| assertEquals("Unexpected value for attribute durationAttr", |
| 3, foo.getDurationAttr().getSeconds()); |
| assertEquals("Unexpected value for attribute durationAttr", |
| 0, foo.getDurationAttr().getHours()); |
| } |
| |
| /** |
| * @param foo |
| */ |
| private void assertAttributeValuesWithoutDefault(Foo foo) { |
| assertNull("Unexpected value for attribute stringAttrNoDefault", |
| foo.getStringAttrNoDefault()); |
| assertNull("Unexpected value for attribute booleanAttrNoDefault", |
| foo.isBooleanAttrNoDefault()); |
| assertNull("Unexpected value for attribute integerAttrNoDefault", |
| foo.getIntegerAttrNoDefault()); |
| assertNull("Unexpected value for attribute intAttrNoDefault", |
| foo.getIntAttrNoDefault()); |
| assertNull("Unexpected value for attribute longAttrNoDefault", |
| foo.getLongAttrNoDefault()); |
| assertNull("Unexpected value for attribute shortAttrNoDefault", |
| foo.getShortAttrNoDefault()); |
| assertNull("Unexpected value for attribute decimalAttrNoDefault", |
| foo.getDecimalAttrNoDefault()); |
| assertNull("Unexpected value for attribute floatAttrNoDefault", |
| foo.getFloatAttrNoDefault()); |
| assertNull("Unexpected value for attribute doubleAttrNoDefault", |
| foo.getDoubleAttrNoDefault()); |
| assertNull("Unexpected value for attribute byteAttrNoDefault", |
| foo.getByteAttrNoDefault()); |
| |
| assertNull("Unexpected value for attribute base64BinaryAttrNoDefault", |
| foo.getBase64BinaryAttrNoDefault()); |
| assertNull("Unexpected value for attribute hexBinaryAttrNoDefault", |
| foo.getHexBinaryAttrNoDefault()); |
| |
| assertNull("Unexpected value for attribute qnameAttrNoDefault", |
| foo.getQnameAttrNoDefault()); |
| |
| assertNull("Unexpected value for attribute unsignedIntAttrNoDefault", |
| foo.getUnsignedIntAttrNoDefault()); |
| assertNull("Unexpected value for attribute unsignedShortAttrNoDefault", |
| foo.getUnsignedShortAttrNoDefault()); |
| assertNull("Unexpected value for attribute unsignedByteAttrNoDefault", |
| foo.getUnsignedByteAttrNoDefault()); |
| assertNull("Unexpected value for attribute durationAttrNoDefault", |
| foo.getDurationAttrNoDefault()); |
| } |
| |
| private void assertDefaultElementValues(Foo foo) { |
| assertNull(foo.getPageColor()); |
| assertEquals("Unexpected value for element pageColor.background", "red", |
| foo.getPageColor2().getBackground()); |
| assertEquals("Unexpected value for element pageColor.foreground", "blue", |
| foo.getPageColor2().getForeground()); |
| |
| assertEquals("Unexpected value for element driving", |
| "LeftTurn", foo.getDriving().value()); |
| assertEquals("Unexpected value for element stringElem", |
| "hello", foo.getStringElem()); |
| assertTrue("Unexpected value for element booleanElem", |
| foo.isBooleanElem()); |
| assertEquals("Unexpected value for element integerElem", |
| new BigInteger("11"), foo.getIntegerElem()); |
| assertEquals("Unexpected value for element intElem", |
| new Integer(12), foo.getIntElem()); |
| assertEquals("Unexpected value for element longElem", |
| new Long(13L), foo.getLongElem()); |
| assertEquals("Unexpected value for element shortElem", |
| new Short((short)14), foo.getShortElem()); |
| assertEquals("Unexpected value for element decimalElem", |
| new BigDecimal("15"), foo.getDecimalElem()); |
| assertEquals("Unexpected value for element floatElem", |
| new Float(16F), foo.getFloatElem()); |
| assertEquals("Unexpected value for element doubleElem", |
| new Double(17D), foo.getDoubleElem()); |
| assertEquals("Unexpected value for element byteElem", |
| new Byte((byte)18), foo.getByteElem()); |
| |
| byte[] expected = DatatypeConverter.parseBase64Binary("abcdefgh"); |
| byte[] effective = foo.getBase64BinaryElem(); |
| |
| assertEquals("Unexpected value for element base64BinaryElem", expected.length, effective.length); |
| for (int i = 0; i < expected.length; i++) { |
| assertEquals("Unexpected value for element base64BinaryElem", expected[i], effective[i]); |
| } |
| |
| expected = new HexBinaryAdapter().unmarshal("ffff"); |
| effective = foo.getHexBinaryElem(); |
| assertEquals("Unexpected value for element hexBinaryElem", expected.length, effective.length); |
| for (int i = 0; i < expected.length; i++) { |
| assertEquals("Unexpected value for element hexBinaryElem", expected[i], effective[i]); |
| } |
| |
| QName qn = foo.getQnameElem(); |
| assertEquals("Unexpected value for element qnameElem", |
| "http://www.w3.org/2001/XMLSchema", qn.getNamespaceURI()); |
| assertEquals("Unexpected value for element qnameElem", |
| "string", qn.getLocalPart()); |
| |
| assertEquals("Unexpected value for element unsignedIntElem", |
| new Long(19L), foo.getUnsignedIntElem()); |
| assertEquals("Unexpected value for element unsignedShortElem", |
| new Integer(20), foo.getUnsignedShortElem()); |
| assertEquals("Unexpected value for element unsignedByteElem", |
| new Short((short)21), foo.getUnsignedByteElem()); |
| |
| assertEquals("Unexpected value for element durationElem", |
| 0, foo.getDurationElem().getSeconds()); |
| assertEquals("Unexpected value for element durationElem", |
| 3, foo.getDurationElem().getHours()); |
| } |
| |
| private void assertSchemaValid(Foo foo) throws Exception { |
| Marshaller marshaller = JAXBContext.newInstance(Foo.class).createMarshaller(); |
| SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); |
| Schema schema = sf.newSchema(getClass().getResource("/schemas/configuration/foo.xsd")); |
| marshaller.setSchema(schema); |
| |
| JAXBElement<Foo> fooElement = |
| new org.apache.cxf.configuration.foo.ObjectFactory().createFooElement(foo); |
| |
| marshaller.marshal(fooElement, new StringWriter()); |
| } |
| } |