/*
* Copyright 2008 Sebastian Gabmeyer
*
* 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 org.exolab.castor.builder.cdr;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
import org.castor.core.constants.cpa.JDOConstants;
import org.exolab.castor.builder.SourceGenerator;
import org.xml.sax.InputSource;
import junit.framework.TestCase;
/**
* Test case checking the correct implementation of CDR file generation
* for both XML and JDO.
*
* @author Sebastian Gabmeyer
* @since 1.2.1
*
*/
public class CdrFileGenerationTest extends TestCase {
private SourceGenerator _generator;
private String _xmlSchema;
private String _cdrDirectoryName;
private String _destDir = "./codegen/src/test/java";
public final void setUp() throws Exception {
super.setUp();
_generator = new SourceGenerator();
_generator.setDestDir(_destDir);
_generator.setSuppressNonFatalWarnings(true);
_generator.setJdoDescriptorCreation(true);
}
public final void tearDown() throws Exception {
super.tearDown();
}
public final void testJDOCDRFileGeneration() throws Exception {
_xmlSchema = getClass().getResource("simple.xsd").toExternalForm();
InputSource inputSource = new InputSource(_xmlSchema);
String pkgName = getClass().getPackage().getName()
+ ".generated.simple";
_cdrDirectoryName = pkgName.replace('.', File.separatorChar);
_generator.generateSource(inputSource, pkgName);
File cdrFile = new File((new File(_destDir, _cdrDirectoryName))
.getPath(), JDOConstants.PKG_CDR_LIST_FILE);
assertTrue(cdrFile.exists());
Properties props = new Properties();
props.load(new FileInputStream(cdrFile));
String fatherDescrName = props
.getProperty("org.exolab.castor.builder.cdr.generated.simple.Father");
assertEquals(
"org.exolab.castor.builder.cdr.generated.simple.jdo_descriptors.FatherJDODescriptor",
fatherDescrName);
// this check could be removed as it belongs to the scope of the JDOClassDescriptorFactory
File fatherDescrFile = new File(_destDir,
fatherDescrName.replace('.', File.separatorChar) + ".java");
assertTrue(fatherDescrFile.exists());
}
public final void testNoJDOCDRFileGeneration() throws Exception {
_xmlSchema = getClass().getResource("schema-entity-non-jdo.xsd")
.toExternalForm();
InputSource inputSource = new InputSource(_xmlSchema);
String pkgName = getClass().getPackage().getName()
+ ".generated.nonjdo";
_cdrDirectoryName = pkgName.replace('.', File.separatorChar);
_generator.generateSource(inputSource, pkgName);
File cdrFile = new File((new File(_destDir, _cdrDirectoryName))
.getPath(), ".jdo.castor.cdr");
assertFalse(cdrFile.exists());
}
}