/**
* Copyright (c) 2006-2011 Floggy Open Source Group. All rights reserved.
*
* 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 net.sourceforge.floggy.persistence.fr2937635;
import java.io.File;
import java.io.FileInputStream;
import javassist.ClassPool;
import com.thoughtworks.xstream.XStream;
import junit.framework.TestCase;
import net.sourceforge.floggy.persistence.Configuration;
import net.sourceforge.floggy.persistence.FloggyException;
import net.sourceforge.floggy.persistence.Weaver;
import net.sourceforge.floggy.persistence.impl.PersistableMetadata;
/**
* DOCUMENT ME!
*
* @author <a href="mailto:thiago.moreira@floggy.org">Thiago Moreira</a>
* @version $Revision$
*/
public class FR2937635Test extends TestCase {
/**
* DOCUMENT ME!
*/
public void testDoesNotExistField() {
File file =
new File("target/test-classes/fr2937635/floggy-does-not-exist-field.xml");
assertTrue(file.exists());
Weaver weaver = new Weaver();
String className = FR2937635.class.getName();
String[] fieldNames = new String[] { "name" };
Configuration c1 = new Configuration();
PersistableMetadata metadata =
new PersistableMetadata(false, className, null, fieldNames, null, null,
null, null, 0, null);
c1.addPersistableMetadata(metadata);
XStream stream = weaver.getXStream();
try {
Configuration c2 =
(Configuration) stream.fromXML(new FileInputStream(file));
weaver.mergeConfigurations(c1, c2);
fail("It should throw a exception");
} catch (Exception e) {
assertEquals(FloggyException.class, e.getClass());
}
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeByte() {
validateIndexFieldType("byte");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeChar() {
validateIndexFieldType("char");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeDouble() {
validateIndexFieldType("double");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeInt() {
validateIndexFieldType("int");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangByte() {
validateIndexFieldType("java.lang.Byte");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangChar() {
validateIndexFieldType("java.lang.Character");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangDouble() {
validateIndexFieldType("java.lang.Double");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangInteger() {
validateIndexFieldType("java.lang.Integer");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangLong() {
validateIndexFieldType("java.lang.Long");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangShort() {
validateIndexFieldType("java.lang.Short");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangString() {
validateIndexFieldType("java.lang.String");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaLangStringBuffer() {
validateIndexFieldType("java.lang.StringBuffer");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaUtilDate() {
validateIndexFieldType("java.util.Date");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeJavaUtilTimezone() {
validateIndexFieldType("java.util.TimeZone");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeLong() {
validateIndexFieldType("long");
}
/**
* DOCUMENT ME!
*/
public void testValidIndexFieldTypeShort() {
validateIndexFieldType("short");
}
/**
* DOCUMENT ME!
*/
public void testValidXMLFile() {
File file = new File("target/test-classes/fr2937635/floggy-valid.xml");
assertTrue(file.exists());
Weaver weaver = new Weaver();
XStream stream = weaver.getXStream();
try {
Configuration configuration =
(Configuration) stream.fromXML(new FileInputStream(file));
assertNotNull(configuration);
} catch (Exception e) {
fail(e.getMessage());
}
}
/**
* DOCUMENT ME!
*
* @param type DOCUMENT ME!
*/
protected void validateIndexFieldType(String type) {
File file =
new File("target/test-classes/fr2937635/floggy-valid-field-type-" + type
+ ".xml");
assertTrue(file.exists());
try {
ClassPool classPool = new ClassPool(true);
classPool.appendClassPath("target/test-classes");
classPool.appendClassPath(
"../floggy-persistence-framework/target/classes");
Weaver weaver = new Weaver(classPool);
PersistableMetadata metadata =
weaver.createPersistableMetadata(classPool.get(
FR2937635.class.getName()));
Configuration c1 = new Configuration();
c1.addPersistableMetadata(metadata);
XStream stream = weaver.getXStream();
Configuration c2 =
(Configuration) stream.fromXML(new FileInputStream(file));
weaver.mergeConfigurations(c1, c2);
} catch (Exception e) {
fail(e.getMessage());
}
}
}