blob: bc0684fc7a30f35045586533508115c25e57be32 [file] [log] [blame]
/*******************************************************************************
* 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.jaxb.core.internal.resource.jaxbprops.JaxbPropertiesResourceModelProvider;
import org.eclipse.jpt.jaxb.core.resource.jaxbprops.JaxbPropertiesResource;
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 = getJavaProject().getProject().getFolder(projectRelativePath);
if (! folder.exists()) {
folder.create(true, false, null);
}
IFile jaxbProperties = getJavaProject().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"));
}
}