001: /*
002: * CoadunationLib: The coaduntion implementation library.
003: * Copyright (C) 2006 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * TieGeneratorTest.java
020: *
021: * JUnit based test
022: */
023:
024: package com.rift.coad.lib.deployment.rmi;
025:
026: import junit.framework.*;
027: import java.io.File;
028: import java.lang.reflect.Method;
029: import java.lang.reflect.Type;
030: import java.net.URLClassLoader;
031: import java.net.URL;
032: import java.util.StringTokenizer;
033: import java.util.Vector;
034: import java.util.Iterator;
035: import java.util.regex.Matcher;
036: import java.util.regex.Pattern;
037: import org.apache.log4j.Logger;
038: import com.rift.coad.lib.common.ClassUtil;
039: import com.rift.coad.lib.common.FileUtil;
040: import com.rift.coad.lib.common.RandomGuid;
041: import com.rift.coad.lib.common.ResourceReader;
042: import com.rift.coad.lib.common.TextFile;
043: import com.rift.coad.lib.common.JarUtil;
044: import com.rift.coad.lib.deployment.CoadunationParser;
045: import com.rift.coad.lib.deployment.BeanInfo;
046: import com.rift.coad.lib.deployment.DeploymentLoader;
047: import com.rift.coad.lib.thirdparty.ant.JavaC;
048: import com.rift.coad.lib.thirdparty.ant.RMIC;
049:
050: /**
051: *
052: * @author mincemeat
053: */
054: public class TieGeneratorTest extends TestCase {
055:
056: public TieGeneratorTest(String testName) {
057: super (testName);
058: }
059:
060: protected void setUp() throws Exception {
061: }
062:
063: protected void tearDown() throws Exception {
064: }
065:
066: public static Test suite() {
067: TestSuite suite = new TestSuite(TieGeneratorTest.class);
068:
069: return suite;
070: }
071:
072: /**
073: * This method will generate a temporary file using the source file.
074: *
075: * @return The path to the newly created temporary file.
076: */
077: private File createTmpDir(File source, File tmpDirBase)
078: throws Exception {
079: File tmpDir = new File(tmpDirBase, RandomGuid.getInstance()
080: .getGuid());
081: if (tmpDir.mkdirs() == false) {
082: throw new Exception("Failed to create the director ["
083: + tmpDir.getAbsolutePath() + "]");
084: }
085: JarUtil.extract(source, tmpDir);
086: return tmpDir;
087: }
088:
089: /**
090: * Test of generate method, of class com.rift.coad.lib.deployment.rmi.TieGenerator.
091: */
092: public void testGenerate() throws Exception {
093: System.out.println("generate");
094:
095: // load the deployment loader
096: File tmpDir = createTmpDir(new File(System
097: .getProperty("test.jar")), new File(System
098: .getProperty("test.tmp.dir")));
099:
100: // parse the coadunation file
101: TextFile textFile = new TextFile(new File(tmpDir,
102: DeploymentLoader.META_FILE));
103: CoadunationParser coadunationParser = new CoadunationParser(
104: textFile.getTextDocument());
105:
106: BeanInfo bean = (BeanInfo) coadunationParser
107: .getDeploymentInfo().getBeans()
108: .get("com.test.BeanImpl");
109: BeanInfo bean2 = (BeanInfo) coadunationParser
110: .getDeploymentInfo().getBeans().get(
111: "com.test3.BeanImpl");
112: File tmpSource = new File(tmpDir, RandomGuid.getInstance()
113: .getGuid());
114: tmpSource.mkdir();
115: TieGenerator instance = new TieGenerator(tmpDir, tmpSource,
116: bean);
117: instance.generate();
118: TieGenerator instance2 = new TieGenerator(tmpDir, tmpSource,
119: bean2);
120: instance2.generate();
121:
122: // test the compiling of these classes
123: File[] classPath = new File[] {
124: tmpDir,
125: new File("./dist/CoadunationLib.jar"),
126: new File("../CoadunationBase/dist/CoadunationBase.jar"),
127: new File("../CoadInclude/dist/CoadunationInclude.jar"),
128: new File(
129: "../CoadunationInclude/dist/CoadunationInclude.jar") };
130: JavaC javaC = new JavaC(classPath, tmpSource, tmpSource);
131: System.out.println("Compiling dir ["
132: + tmpSource.getAbsolutePath() + "]");
133: javaC.compileClasses();
134:
135: RMIC rmic = new RMIC(classPath, tmpSource, "**/*.class",
136: tmpSource);
137: System.out.println("Compiling dir ["
138: + tmpSource.getAbsolutePath() + "]");
139: rmic.parse();
140: }
141:
142: }
|