| /*******************************************************************************
|
| * Copyright (c) 2013 Oracle. All rights reserved.
|
| * This program and the accompanying materials are made available under the
|
| * terms of the Eclipse Public License 2.0, which accompanies this distribution
|
| * and is available at https://www.eclipse.org/legal/epl-2.0/
|
| *
|
| * SPDX-License-Identifier: EPL-2.0
|
| *
|
| * Contributors:
|
| * Oracle - initial API and implementation
|
| *******************************************************************************/ |
| package org.eclipse.jpt.jaxb.eclipselink.core.tests.internal.context.oxm; |
|
|
| import org.eclipse.core.runtime.CoreException;
|
| import org.eclipse.jdt.core.ICompilationUnit;
|
| import org.eclipse.jpt.common.core.resource.xml.JptXmlResource;
|
| import org.eclipse.jpt.common.utility.internal.iterable.IterableTools;
|
| import org.eclipse.jpt.jaxb.core.context.JaxbPackageInfo;
|
| import org.eclipse.jpt.jaxb.core.resource.java.JAXB;
|
| import org.eclipse.jpt.jaxb.eclipselink.core.context.ELJaxbContextRoot;
|
| import org.eclipse.jpt.jaxb.eclipselink.core.context.oxm.OxmFile;
|
| import org.eclipse.jpt.jaxb.eclipselink.core.context.oxm.OxmXmlSchema;
|
| import org.eclipse.jpt.jaxb.eclipselink.core.resource.oxm.EXmlBindings;
|
| import org.eclipse.jpt.jaxb.eclipselink.core.resource.oxm.EXmlSchema;
|
| import org.eclipse.jpt.jaxb.eclipselink.core.resource.oxm.OxmFactory;
|
| |
| public class OxmXmlSchemaTests
|
| extends OxmContextModelTestCase {
|
|
|
| public OxmXmlSchemaTests(String name) {
|
| super(name);
|
| }
|
|
|
|
|
| protected void addOxmFile() throws Exception {
|
| StringBuffer sb = new StringBuffer();
|
| sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(CR);
|
| sb.append("<xml-bindings").append(CR);
|
| sb.append(" version=\"2.4\"").append(CR);
|
| sb.append(" xmlns=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm\"").append(CR);
|
| sb.append(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"").append(CR);
|
| sb.append(" xsi:schemaLocation=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm http://www.eclipse.org/eclipselink/xsds/eclipselink_oxm_2_4.xsd\"").append(CR);
|
| sb.append(" package-name=\"").append(PACKAGE_NAME).append("\"").append(CR);
|
| sb.append(" />").append(CR);
|
| addOxmFile("oxm.xml", sb);
|
| }
|
|
|
| protected ICompilationUnit createPackageInfoWithXmlSchema() throws CoreException {
|
| return createTestPackageInfo("@XmlSchema", JAXB.XML_SCHEMA);
|
| }
|
|
|
| public void testUpdateNamespace() throws Exception {
|
| createPackageInfoWithXmlSchema();
|
| JaxbPackageInfo packageInfo = IterableTools.get(getContextRoot().getPackages(), 0).getPackageInfo();
|
|
|
| addOxmFile();
|
| ELJaxbContextRoot root = (ELJaxbContextRoot) getJaxbProject().getContextRoot();
|
| OxmFile oxmFile = root.getOxmFile(PACKAGE_NAME);
|
| OxmXmlSchema xmlSchema = oxmFile.getXmlBindings().getXmlSchema();
|
| JptXmlResource oxmResource = oxmFile.getOxmResource();
|
| EXmlBindings eXmlBindings = (EXmlBindings) oxmResource.getRootObject();
|
|
|
| assertNull(eXmlBindings.getXmlSchema());
|
| assertNotNull(xmlSchema);
|
| assertEquals("", xmlSchema.getNamespace());
|
| assertNull(xmlSchema.getSpecifiedNamespace());
|
| assertEquals("", xmlSchema.getDefaultNamespace());
|
|
|
| packageInfo.getXmlSchema().setSpecifiedNamespace("foo");
|
|
|
| assertNull(eXmlBindings.getXmlSchema());
|
| assertNotNull(xmlSchema);
|
| assertEquals("foo", xmlSchema.getNamespace());
|
| assertNull(xmlSchema.getSpecifiedNamespace());
|
| assertEquals("foo", xmlSchema.getDefaultNamespace());
|
|
|
| EXmlSchema eXmlSchema = OxmFactory.eINSTANCE.createEXmlSchema();
|
| eXmlBindings.setXmlSchema(eXmlSchema);
|
| eXmlSchema.setNamespace("bar");
|
| oxmResource.save();
|
|
|
| assertNotNull(eXmlBindings.getXmlSchema());
|
| assertNotNull(xmlSchema);
|
| assertEquals("bar", xmlSchema.getNamespace());
|
| assertEquals("bar", xmlSchema.getSpecifiedNamespace());
|
| assertEquals("foo", xmlSchema.getDefaultNamespace());
|
|
|
| eXmlSchema.setNamespace(null);
|
| oxmResource.save();
|
|
|
| assertNotNull(eXmlBindings.getXmlSchema());
|
| assertNotNull(xmlSchema);
|
| assertEquals("foo", xmlSchema.getNamespace());
|
| assertNull(xmlSchema.getSpecifiedNamespace());
|
| assertEquals("foo", xmlSchema.getDefaultNamespace());
|
| }
|
|
|
| public void testModifyNamespace() throws Exception {
|
| addOxmFile();
|
| ELJaxbContextRoot root = (ELJaxbContextRoot) getJaxbProject().getContextRoot();
|
| OxmFile oxmFile = root.getOxmFile(PACKAGE_NAME);
|
| OxmXmlSchema xmlSchema = oxmFile.getXmlBindings().getXmlSchema();
|
| JptXmlResource oxmResource = oxmFile.getOxmResource();
|
| EXmlBindings eXmlBindings = (EXmlBindings) oxmResource.getRootObject();
|
|
|
| assertNull(eXmlBindings.getXmlSchema());
|
| assertNotNull(xmlSchema);
|
| assertEquals("", xmlSchema.getNamespace());
|
| assertNull(xmlSchema.getSpecifiedNamespace());
|
| assertEquals("", xmlSchema.getDefaultNamespace());
|
|
|
| xmlSchema.setSpecifiedNamespace("bar");
|
| oxmResource.save();
|
| EXmlSchema eXmlSchema = eXmlBindings.getXmlSchema();
|
|
|
| assertFileContentsContains("oxm.xml", "<xml-schema", true);
|
| assertFileContentsContains("oxm.xml", "namespace=\"bar\"", true);
|
| assertNotNull(eXmlSchema);
|
| assertEquals("bar", eXmlSchema.getNamespace());
|
| assertEquals("bar", xmlSchema.getNamespace());
|
| assertEquals("bar", xmlSchema.getSpecifiedNamespace());
|
| assertEquals("", xmlSchema.getDefaultNamespace());
|
|
|
| xmlSchema.setSpecifiedNamespace(null);
|
| oxmResource.save();
|
|
|
| assertFileContentsContains("oxm.xml", "namespace=", false);
|
| assertNotNull(eXmlBindings.getXmlSchema());
|
| assertEquals("", xmlSchema.getNamespace());
|
| assertNull(xmlSchema.getSpecifiedNamespace());
|
| assertEquals("", xmlSchema.getDefaultNamespace());
|
| }
|
| } |