blob: 02670868bc216f8fe40985504abe8cf0514ceb2d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 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.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.jaxb.core.internal.resource.jaxbprops.JaxbPropertiesResourceModelProvider;
import org.eclipse.jpt.jaxb.core.resource.jaxbprops.JaxbPropertiesResource;
@SuppressWarnings("nls")
public class JaxbPropertiesResourceTests
extends AnnotationTestCase {
private static String JAXB_PROPERTIES = "jaxb.properties";
public JaxbPropertiesResourceTests(String name) {
super(name);
}
private IFile createJaxbProperties(IPath projectRelativePath, String[] ... propertyValuePairs) throws Exception {
IFolder folder = this.getProject().getFolder(projectRelativePath);
if (! folder.exists()) {
folder.create(true, false, null);
}
IFile jaxbProperties = this.getProject().getFile(projectRelativePath.append(new Path(JAXB_PROPERTIES)));
InputStream stream = inputStream(propertyValuePairs);
jaxbProperties.create(stream, true, null);
return jaxbProperties;
}
private void setProperties(IFile jaxbProperties, String[] ... propertyValuePairs) throws Exception {
jaxbProperties.setContents(inputStream(propertyValuePairs), true, false, null);
}
private InputStream inputStream(String[] ... propertyValuePairs) {
StringBuffer sb = new StringBuffer();
for (String[] propertyValuePair : propertyValuePairs) {
sb.append(propertyValuePair[0] + "=" + propertyValuePair[1] + CR);
}
return new ByteArrayInputStream(sb.toString().getBytes());
}
public void testUpdateProperties() throws Exception {
IFile jaxbProperties = createJaxbProperties(new Path("src/test"), new String[] {"foo", "fooProp"}, new String[] {"bar", "barProp"});
JaxbPropertiesResource resource = JaxbPropertiesResourceModelProvider.instance().buildResourceModel(jaxbProperties);
assertEquals(resource.getProperty("foo"), "fooProp");
assertEquals(resource.getProperty("bar"), "barProp");
setProperties(jaxbProperties, new String[] {"foo", "fooProp2"}, new String[] {"baz", "bazProp"});
assertEquals(resource.getProperty("foo"), "fooProp2");
assertNull(resource.getProperty("bar"));
assertEquals(resource.getProperty("baz"), "bazProp");
setProperties(jaxbProperties);
assertNull(resource.getProperty("foo"));
assertNull(resource.getProperty("bar"));
assertNull(resource.getProperty("baz"));
}
}