/* * Copyright [2006] [University Corporation for Advanced Internet Development, Inc.] * * Licensed 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.opensaml.common; import org.opensaml.Configuration; import org.opensaml.saml2.metadata.LocalizedString; import org.opensaml.saml2.metadata.Organization; import org.opensaml.saml2.metadata.OrganizationDisplayName; import org.opensaml.saml2.metadata.OrganizationName; import org.opensaml.saml2.metadata.OrganizationURL; import org.opensaml.saml2.metadata.impl.OrganizationBuilder; import org.opensaml.saml2.metadata.impl.OrganizationDisplayNameBuilder; import org.opensaml.saml2.metadata.impl.OrganizationNameBuilder; import org.opensaml.saml2.metadata.impl.OrganizationURLBuilder; import org.opensaml.xml.io.Marshaller; import org.opensaml.xml.io.MarshallerFactory; import org.opensaml.xml.io.MarshallingException; import org.opensaml.xml.io.Unmarshaller; import org.opensaml.xml.io.UnmarshallerFactory; import org.opensaml.xml.io.UnmarshallingException; import org.w3c.dom.Element; /** * Round trip messaging test case. */ public class RoundTripTest extends BaseTestCase { /** Organization to marshall */ private Organization organization; /** Organization Marshaller */ private Marshaller orgMarshaller; /** Organization Unmarshaller */ private Unmarshaller orgUnmarshaller; /** {@inheritDoc} */ protected void setUp(){ OrganizationBuilder orgBuilder = (OrganizationBuilder) Configuration.getBuilderFactory().getBuilder(Organization.TYPE_NAME); organization = orgBuilder.buildObject(); OrganizationNameBuilder orgNameBuilder = (OrganizationNameBuilder) Configuration.getBuilderFactory().getBuilder(OrganizationName.DEFAULT_ELEMENT_NAME); OrganizationName newOrgName = orgNameBuilder.buildObject(); newOrgName.setName(new LocalizedString("OrgFullName", "en")); organization.getOrganizationNames().add(newOrgName); OrganizationDisplayNameBuilder orgDisplayNameBuilder = (OrganizationDisplayNameBuilder) Configuration.getBuilderFactory().getBuilder(OrganizationDisplayName.DEFAULT_ELEMENT_NAME); OrganizationDisplayName newOrgDisplayName = orgDisplayNameBuilder.buildObject(); newOrgDisplayName.setName(new LocalizedString("OrgDisplayName", "en")); organization.getDisplayNames().add(newOrgDisplayName); OrganizationURLBuilder orgURLBuilder = (OrganizationURLBuilder) Configuration.getBuilderFactory().getBuilder(OrganizationURL.DEFAULT_ELEMENT_NAME); OrganizationURL newOrgURL = orgURLBuilder.buildObject(); newOrgURL.setURL(new LocalizedString("http://org.url.edu", "en")); organization.getURLs().add(newOrgURL); MarshallerFactory marshallerFactory = Configuration.getMarshallerFactory(); orgMarshaller = marshallerFactory.getMarshaller(organization); UnmarshallerFactory unmarshallerFactory = Configuration.getUnmarshallerFactory(); orgUnmarshaller = unmarshallerFactory.getUnmarshaller(organization.getElementQName()); } /** * Tests marshalling and unmarshalling the same object a three times. * * @throws MarshallingException thrown if the object can't be marshalled * @throws UnmarshallingException thrown if hte object can't be unmarshalled */ public void testRoundTrip() throws MarshallingException, UnmarshallingException{ //Marshall the element Element orgElement1 = orgMarshaller.marshall(organization); // Unmarshall it Organization org2 = (Organization) orgUnmarshaller.unmarshall(orgElement1); // Drop DOM and remarshall org2.releaseDOM(); org2.releaseChildrenDOM(true); Element orgElement2 = orgMarshaller.marshall(org2); assertXMLEqual(orgElement1.getOwnerDocument(), orgElement2.getOwnerDocument()); // Unmarshall again Organization org3 = (Organization) orgUnmarshaller.unmarshall(orgElement2); // Drop DOM and remarshall org3.releaseDOM(); org3.releaseChildrenDOM(true); Element orgElement3 = orgMarshaller.marshall(org3); assertXMLEqual(orgElement1.getOwnerDocument(), orgElement3.getOwnerDocument()); } }