/*
* This work is Open Source and licensed by the European Commission under the
* conditions of the European Public License v1.1
*
* (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1);
*
* any use of this file implies acceptance of the conditions of this license.
* 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.
*
* ---
*
* Test cases for marshalling complex attributes.
*
* Implemented are two testcases for marshalling and unmarshalling. These testcases are
* for canonical residenc address and has bank account.
*/
package eu.stork.peps.tests;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
import org.junit.Test;
import eu.stork.peps.complex.attributes.CanonicalAddressType;
import eu.stork.peps.complex.attributes.HasAccountInBankType;
import eu.stork.peps.complex.attributes.ObjectFactory;
/**
* @author Advania
*
* Examples on how to use the jaxb marshaller.
*
* The classes are created from the StorkcomplexAttributes.xsd schema located in resources.
*
* @version $Revision: 1.00 $, $Date: 2014-17-02 11:15:00 $
*
*/
public class ComplexAttributesMarshalling {
/**
* Test marshalling canonical address
*
*
* IS
* Reykjavik
* RVK
* Reykjavik
* 101
* Laugavegur
* 1
* 10
*
*/
@Test
public void testMarshallCanonicalResidencAddress()
{
try
{
final CanonicalAddressType object = new CanonicalAddressType();
object.setApartmentNumber("10");
object.setCountryCodeAddress("IS");
object.setMunicipalityCode("RVK");
object.setPostalCode("101");
object.setState("Reykjavik");
object.setStreetName("Laugavegur");
object.setStreetNumber("1");
object.setTown("Reykjavik");
final JAXBContext context = JAXBContext.newInstance(CanonicalAddressType.class);
final Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
final ObjectFactory objf = new ObjectFactory();
m.marshal(objf.createCanonicalResidenceAddress(object), new FileOutputStream("CanonicalAddressType.xml"));
m.marshal(objf.createCanonicalResidenceAddress(object), System.out);
}
catch (JAXBException | FileNotFoundException e)
{
e.printStackTrace();
}
}
/**
* Test unmarshalling canonical address
*
*
* IS
* Reykjavik
* RVK
* Reykjavik
* 101
* Laugavegur
* 1
* 10
*
*/
@Test
public void testUnmarshallCanonicalAddress()
{
JAXBContext uContext;
try
{
uContext = JAXBContext.newInstance(CanonicalAddressType.class);
final Unmarshaller u = uContext.createUnmarshaller();
final File file = new File("CanonicalAddressType.xml");
final JAXBElement root = u.unmarshal(new StreamSource(file), CanonicalAddressType.class);
final CanonicalAddressType foo = root.getValue();
final String A = foo.getStreetName();
final String B = foo.getStreetNumber();
System.out.println("Streetname: " + A);
System.out.println("Streetnumber: " + B);
}
catch (final JAXBException e)
{
e.printStackTrace();
}
}
/**
* Test marshalling has bank account
*
*
* Arion
* 3
*
*/
@Test
public void testMarshallHasBankAccount()
{
try
{
final HasAccountInBankType object = new HasAccountInBankType();
object.setAQAA(3);
object.setBankName("Arion Bank");
final JAXBContext context = JAXBContext.newInstance(HasAccountInBankType.class);
final Marshaller m = context.createMarshaller();
final ObjectFactory o = new ObjectFactory();
m.marshal(o.createHasAccountInBank(object), new FileOutputStream ("hasbankaccount.xml"));
m.marshal(o.createHasAccountInBank(object), System.out);
} catch (JAXBException | FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* Test unmarshalling has bank account
*
*
* Arion
* 3
*
*/
@Test
public void testUnmarshallHasBankAccount()
{
try
{
final JAXBContext context = JAXBContext.newInstance(HasAccountInBankType.class);
final Unmarshaller um = context.createUnmarshaller();
final File file = new File("hasbankaccount.xml");
final JAXBElement root = um.unmarshal(new StreamSource(file), HasAccountInBankType.class);
final HasAccountInBankType foo = root.getValue();
System.out.println(foo.getBankName());
} catch (final JAXBException e) {
e.printStackTrace();
}
}
}