/**
* Licensed to Jasig under one or more contributor license
* agreements. See the NOTICE file distributed with this work
* for additional information regarding copyright ownership.
* Jasig 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 edu.wisc.cypress.dm;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.InputStream;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Unmarshaller;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.io.IOUtils;
import org.junit.Test;
import edu.wisc.cypress.xdm.benstmt.XmlBenefitStatement;
import edu.wisc.cypress.xdm.benstmt.XmlBenefitStatements;
import edu.wisc.cypress.xdm.ernstmt.XmlEarningStatements;
import edu.wisc.cypress.xdm.levstmt.XmlLeaveStatements;
import edu.wisc.cypress.xdm.sabstmt.XmlSabbaticalReports;
import edu.wisc.cypress.xdm.taxstmt.XmlTaxStatements;
/**
* @author Eric Dalquist
* @version $Revision: 1.1 $
*/
public class CypressJaxbTest {
@Test
public void testBenefitStatementsUnmarshall() throws Exception {
final XmlBenefitStatements statements = unmarshall("/sampleData/benefit-statements.xml", XmlBenefitStatements.class);
assertNotNull(statements);
final List<XmlBenefitStatement> benefitStatements = statements.getBenefitStatements();
assertNotNull(benefitStatements);
assertEquals(3, benefitStatements.size());
}
@Test
public void testBenefitStatements2Unmarshall() throws Exception {
final XmlBenefitStatements statements = unmarshall("/sampleData/benefit-statements_2.xml", XmlBenefitStatements.class);
assertNotNull(statements);
final List<XmlBenefitStatement> benefitStatements = statements.getBenefitStatements();
assertNotNull(benefitStatements);
assertEquals(6, benefitStatements.size());
}
@Test
public void testEarningStatementsUnmarshall() throws Exception {
final XmlEarningStatements statements = unmarshall("/sampleData/earning-statements.xml", XmlEarningStatements.class);
assertNotNull(statements);
}
@Test
public void testLeaveMultiStatementsUnmarshall() throws Exception {
final XmlLeaveStatements statements = unmarshall("/sampleData/leave-multi-statements.xml", XmlLeaveStatements.class);
assertNotNull(statements);
}
@Test
public void testLeaveStatementsUnmarshall() throws Exception {
final XmlLeaveStatements statements = unmarshall("/sampleData/leave-statements.xml", XmlLeaveStatements.class);
assertNotNull(statements);
}
@Test
public void testSabbaticalReportsUnmarshall() throws Exception {
final XmlSabbaticalReports statements = unmarshall("/sampleData/sabbatical-reports.xml", XmlSabbaticalReports.class);
assertNotNull(statements);
}
@Test
public void testTaxStatementsUnmarshall() throws Exception {
final XmlTaxStatements statements = unmarshall("/sampleData/tax-statements.xml", XmlTaxStatements.class);
assertNotNull(statements);
}
private <T> T unmarshall(String resource, Class<T> clazz) throws Exception {
final JAXBContext context = JAXBContext.newInstance(clazz.getPackage().getName());
final Unmarshaller unmarshaller = context.createUnmarshaller();
final InputStream xmlStream = this.getClass().getResourceAsStream(resource);
try {
assertNotNull(xmlStream);
final JAXBElement<T> statements = unmarshaller.unmarshal(new StreamSource(xmlStream), clazz);
return statements.getValue();
}
finally {
IOUtils.closeQuietly(xmlStream);
}
}
}