package org.compass.annotations.test.config.binding.metadata;
import java.io.IOException;
import java.io.InputStream;
import org.compass.annotations.test.AbstractAnnotationsTestCase;
import org.compass.core.Compass;
import org.compass.core.config.CompassConfiguration;
import org.compass.core.config.CompassEnvironment;
import org.compass.core.config.binding.metadata.AsmMetaDataReader;
import org.compass.core.config.binding.metadata.JavassistMetaDataReader;
import org.compass.core.spi.InternalCompass;
import org.compass.core.util.ClassUtils;
/**
* @author kimchy
*/
public class ConfigMetaDataBindingTests extends AbstractAnnotationsTestCase {
public void testDefaultAddingInputStream() throws Exception {
CompassConfiguration conf = buildConf();
verifyInputStreamLoaded(conf);
}
public void testAsmAddingInputStream() throws Exception {
CompassConfiguration conf = buildConf();
conf.getSettings().setObjectSetting(CompassEnvironment.Scanner.READER, new AsmMetaDataReader());
verifyInputStreamLoaded(conf);
}
public void testJavassistAddingInputStream() throws Exception {
CompassConfiguration conf = buildConf();
conf.getSettings().setObjectSetting(CompassEnvironment.Scanner.READER, new JavassistMetaDataReader());
verifyInputStreamLoaded(conf);
}
private void verifyInputStreamLoaded(CompassConfiguration conf) throws IOException {
InputStream is = A.class.getClassLoader().getResourceAsStream(ClassUtils.convertClassNameToResourcePath(A.class.getName()) + ".class");
conf.addInputStream(is, ClassUtils.convertClassNameToResourcePath(A.class.getName()) + ".class");
is.close();
Compass compass = conf.buildCompass();
assertNotNull(((InternalCompass) compass).getMapping().getRootMappingByClass(A.class));
compass.close();
}
}