/*
* 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.FileOutputStream;
import java.io.StringWriter;
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.joda.time.DateTime;
import org.junit.Test;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.CanonicalAddressType;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.HasAccountInBankType;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.MandateContentType;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.MandateType;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.ObjectFactory;
import eu.stork.peps.complex.attributes.eu.stork.names.tc.stork._1_0.assertion.RepresentationPersonType;
/**
* @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 {
MandateContentType mtObject = new MandateContentType();
RepresentationPersonType rpObject = new RepresentationPersonType();
RepresentationPersonType rptObject = new RepresentationPersonType();
void initMandateValues() {
// Fill in the information ...
mtObject.setIsChained(false);
// mtObject.setIsJoined("IsJoined");
mtObject.setTypeOfPower("The Force");
mtObject.setIsChained(false);
// ... fill in info for the representative
rpObject.setTextRegisteredAddress("Address at some street");
rpObject.setDateOfBirth(DateTime.now().toString());
rpObject.setEIdentifier("123456");
rpObject.setGivenName("Name of some person");
rpObject.setLegalForm("Type of person");
// .... fill in the info for the represented
rptObject.setTextRegisteredAddress("Another Address at some street");
rptObject.setDateOfBirth(DateTime.now().toString());
rptObject.setEIdentifier("654321");
rptObject.setGivenName("Another Name of some person");
rptObject.setLegalForm("Yet another type of person");
}
/**
* 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 ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testForDiana() {
initMandateValues();
try {
// Create the marshallers'
final JAXBContext mandateTypeContext = JAXBContext.newInstance(MandateType.class);
final Marshaller mandateMarshaller = mandateTypeContext.createMarshaller();
final ObjectFactory objf = new ObjectFactory();
MandateType mandate = new MandateType();
RepresentationPersonType representative = new RepresentationPersonType();
representative.setDateOfBirth("1990-01-01");
representative.setGivenName("Bilbo");
representative.setSurname("Baggins");
representative.setEIdentifier("IT/IT/12345678990");
mandate.setRepresentative(representative);
RepresentationPersonType represented = new RepresentationPersonType();
represented.setTextRegisteredAddress("Via....");
represented.setELPIdentifier("IT/1111111");
represented.setLegalName("Shire Corp.");
mandate.setRepresented(represented);
MandateContentType mandateContent1 = new MandateContentType();
mandateContent1.setOriginalMandate("Chief executive officer".getBytes());
mandateContent1.setOriginalMandateType("text/plain");
MandateContentType mandateContent2 = new MandateContentType();
mandateContent2.setOriginalMandate("Chief executive officer2".getBytes());
mandateContent2.setOriginalMandateType("text/plain");
mandate.getMandateContent().add(mandateContent1);
mandate.getMandateContent().add(mandateContent2);
// marshall the mandatecontent
StringWriter sw = new StringWriter();
mandateMarshaller.marshal(objf.createMandate(mandate), sw);
System.out.print(sw.toString());
}
catch ( JAXBException e ) {
e.printStackTrace();
}
}
@Test
public void testMandateContent() {
initMandateValues();
try {
final MandateType object = new MandateType();
// Make the object ....
object.getMandateContent().add(mtObject);
object.setRepresented(rpObject);
object.setRepresentative(rptObject);
final JAXBContext context = JAXBContext.newInstance(MandateType.class);
// Create the marshaller
final Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
final ObjectFactory objf = new ObjectFactory();
// Various types of output
m.marshal(objf.createMandate(object), new FileOutputStream("MandateContentType.xml"));
m.marshal(objf.createMandate(object), System.out);
StringWriter sw = new StringWriter();
m.marshal(objf.createMandate(object), sw);
}
catch ( Exception 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 ( Exception 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();
}
}
}