| /******************************************************************************* |
| * Copyright (c) 2011 Oracle. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0, which accompanies this distribution |
| * and is available at http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Oracle - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jpt.jaxb.core.tests.internal.resource; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.InputStream; |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IFolder; |
| import org.eclipse.core.runtime.IPath; |
| import org.eclipse.core.runtime.Path; |
| import org.eclipse.jpt.common.core.tests.internal.utility.jdt.AnnotationTestCase; |
| import org.eclipse.jpt.common.utility.internal.CollectionTools; |
| import org.eclipse.jpt.common.utility.internal.iterables.ArrayIterable; |
| import org.eclipse.jpt.jaxb.core.internal.resource.jaxbindex.JaxbIndexResourceModelProvider; |
| import org.eclipse.jpt.jaxb.core.resource.jaxbindex.JaxbIndexResource; |
| |
| |
| public class JaxbIndexResourceTests |
| extends AnnotationTestCase { |
| |
| private static String JAXB_INDEX = "jaxb.index"; |
| |
| |
| public JaxbIndexResourceTests(String name) { |
| super(name); |
| } |
| |
| |
| private IFile createJaxbIndex(IPath projectRelativePath, String... classNames) throws Exception { |
| IFolder folder = getJavaProject().getProject().getFolder(projectRelativePath); |
| if (! folder.exists()) { |
| folder.create(true, false, null); |
| } |
| IFile jaxbIndex = getJavaProject().getProject().getFile(projectRelativePath.append(new Path(JAXB_INDEX))); |
| InputStream stream = inputStream(classNames); |
| jaxbIndex.create(stream, true, null); |
| return jaxbIndex; |
| } |
| |
| private void setClassNames(IFile jaxbIndex, String... classNames) throws Exception { |
| jaxbIndex.setContents(inputStream(classNames), true, false, null); |
| } |
| |
| private InputStream inputStream(String... classNames) { |
| StringBuffer sb = new StringBuffer(); |
| for (String className : classNames) { |
| sb.append(className + CR); |
| } |
| return new ByteArrayInputStream(sb.toString().getBytes()); |
| } |
| |
| public void testUpdateClasses() throws Exception { |
| IFile jaxbIndex = createJaxbIndex(new Path("src/test"), "foo", "bar"); |
| JaxbIndexResource resource = JaxbIndexResourceModelProvider.instance().buildResourceModel(jaxbIndex); |
| |
| assertTrue(CollectionTools.elementsAreEqual( |
| resource.getFullyQualifiedClassNames(), |
| new ArrayIterable<String>(new String[] {"test.foo", "test.bar"}))); |
| |
| setClassNames(jaxbIndex, "foo", "bar", "baz"); |
| |
| assertTrue(CollectionTools.elementsAreEqual( |
| resource.getFullyQualifiedClassNames(), |
| new ArrayIterable<String>(new String[] {"test.foo", "test.bar", "test.baz"}))); |
| |
| setClassNames(jaxbIndex); |
| |
| assertTrue(CollectionTools.isEmpty(resource.getFullyQualifiedClassNames())); |
| |
| jaxbIndex = createJaxbIndex(new Path("src"), "foo", "bar"); |
| resource = JaxbIndexResourceModelProvider.instance().buildResourceModel(jaxbIndex); |
| |
| assertTrue(CollectionTools.elementsAreEqual( |
| resource.getFullyQualifiedClassNames(), |
| new ArrayIterable<String>(new String[] {"foo", "bar"}))); |
| |
| setClassNames(jaxbIndex, "foo", "bar", "baz"); |
| |
| assertTrue(CollectionTools.elementsAreEqual( |
| resource.getFullyQualifiedClassNames(), |
| new ArrayIterable<String>(new String[] {"foo", "bar", "baz"}))); |
| |
| setClassNames(jaxbIndex); |
| |
| assertTrue(CollectionTools.isEmpty(resource.getFullyQualifiedClassNames())); |
| } |
| } |