logo       

r1918 - in izpack-src/trunk: . src src/dtd src/lib/com/izforge/izpack/compi: msg#00030

Subject: r1918 - in izpack-src/trunk: . src src/dtd src/lib/com/izforge/izpack/compiler src/lib/com/izforge/izpack/installer src/lib/com/izforge/izpack/rules
Author: dreil
Date: 2007-11-29 15:02:17 +0100 (Thu, 29 Nov 2007)
New Revision: 1918

Modified:
   izpack-src/trunk/Versions.txt
   izpack-src/trunk/src/build.xml
   izpack-src/trunk/src/dtd/installation.dtd
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/IPackager.java
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/MultiVolumePackager.java
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Packager.java
   izpack-src/trunk/src/lib/com/izforge/izpack/compiler/PackagerBase.java
   izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java
   izpack-src/trunk/src/lib/com/izforge/izpack/rules/Condition.java
   izpack-src/trunk/src/lib/com/izforge/izpack/rules/RulesEngine.java
Log:
Added conditions declaration to installation xml.
Refactoring Packager implementations

Modified: izpack-src/trunk/Versions.txt
===================================================================
--- izpack-src/trunk/Versions.txt       2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/Versions.txt       2007-11-29 14:02:17 UTC (rev 1918)
@@ -58,6 +58,8 @@
 - Added condition-attribute to pack element in installer.xml (Dennis Reil)
 - Spanish langpack update (Sergio Banos Calvo via Julien Ponge)
 - Various fixes (Loic via Julien Ponge)
+- Added conditions-definition to installer xml (Dennis Reil)
+
   
   > 3.10.2 (build 2007.05.11)
 

Modified: izpack-src/trunk/src/build.xml
===================================================================
--- izpack-src/trunk/src/build.xml      2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/build.xml      2007-11-29 14:02:17 UTC (rev 1918)
@@ -290,6 +290,7 @@
             <include name="com/izforge/izpack/util/Debug.java" />
             <include name="com/izforge/izpack/util/OsConstraint.java" />
             <include name="com/izforge/izpack/util/JarOutputStream.java" />
+               <include name="com/izforge/izpack/rules/*.java" />
             <include name="net/n3/nanoxml/*.java" />
         </javac>
         <copy todir="${build.dir}/com/izforge/izpack/ant/langpacks">
@@ -321,6 +322,8 @@
                 <include name="com/izforge/izpack/ant/langpacks/*.properties" 
/>
                 <include 
name="com/izforge/izpack/event/CompilerListener.class" />
                 <include 
name="com/izforge/izpack/event/SimpleCompilerListener.class" />
+               <include name="com/izforge/izpack/rules/*.class" />
+               <include name="com/izforge/izpack/installer/*.class" />
                 <include name="net/n3/nanoxml/*.class" />
             </fileset>
         </jar>
@@ -385,6 +388,7 @@
             <include name="com/izforge/izpack/util/os/*.java" />
             <include name="com/izforge/izpack/rules/*.java" />
             <include name="com/izforge/izpack/uninstaller/SelfModifier*.java"/>
+               <include name="com/izforge/izpack/rules/*.java" />
             <include name="net/n3/nanoxml/*.java" />
         </javac>
     </target>
@@ -408,6 +412,7 @@
                 <include name="com/izforge/izpack/panels/NextMedia*.class"/>
                 <include name="com/izforge/izpack/rules/*.class" />
                 <include 
name="com/izforge/izpack/uninstaller/SelfModifier*.class"/>
+               <include name="com/izforge/izpack/rules/*.class" />
                 <include name="net/n3/nanoxml/*.class" />
             </fileset>
             <zipfileset src="${basedir}/lib/jakarta-regexp-1.3.jar">
@@ -917,10 +922,12 @@
         </copy>
     </target>
 
-    <target name="build.docu" description="Builds the customer documentation"> 
        
+    <target name="build.docu" description="Builds the customer documentation">
+        <!--           
         <exec executable="python" dir="${basedir}/src/doc-reST">
             <arg value="build.py"/>
         </exec>
+         
         <mkdir dir="${doc.dir}/izpack/html" />
         <copy todir="${doc.dir}/izpack/html" preservelastmodified="true">
             <fileset dir="${basedir}/src/doc-reST/html">
@@ -932,7 +939,8 @@
             <fileset dir="${basedir}/src/doc-reST/pdf">
                 <include name="manual.pdf" />
             </fileset>
-        </copy>        
+        </copy>
+        -->            
     </target>
 
     <target name="create.docu"

Modified: izpack-src/trunk/src/dtd/installation.dtd
===================================================================
--- izpack-src/trunk/src/dtd/installation.dtd   2007-11-27 21:02:03 UTC (rev 
1917)
+++ izpack-src/trunk/src/dtd/installation.dtd   2007-11-29 14:02:17 UTC (rev 
1918)
@@ -10,7 +10,7 @@
 -->
 
 <!-- The root element -->
-<!ELEMENT installation (preinstall?, info, packaging?, properties?, 
variables?, 
+<!ELEMENT installation (preinstall?, info, packaging?, properties?, 
variables?,conditions?, 
                         guiprefs?, locale, resources?, panels,
                         listeners?, packs, jar*, native*, postinstall?)>
     <!ATTLIST installation version CDATA #REQUIRED>
@@ -55,6 +55,13 @@
     <!ELEMENT variable EMPTY>
         <!ATTLIST variable name CDATA #REQUIRED>
         <!ATTLIST variable value CDATA #REQUIRED>
+
+<!-- The conditions markup (condition declarations) -->
+<!ELEMENT conditions (condition*)>
+<!-- condition elements can have child elements depending on the specific type 
-->
+<!ELEMENT condition EMPTY>
+<!ATTLIST condition type CDATA #REQUIRED>
+<!ATTLIST condition id CDATA #REQUIRED>
         
 <!-- The guiprefs markup (customizes the installer in GUI mode) -->
 <!ELEMENT guiprefs (laf*, modifier*)>

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java  
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Compiler.java  
2007-11-29 14:02:17 UTC (rev 1918)
@@ -92,7 +92,7 @@
     private String compr_format;
     private int compr_level;
     private PackagerListener packagerlistener;
-
+      
     /**
      * Set the IzPack home directory
      * @param izHome - the izpack home directory
@@ -150,7 +150,7 @@
         // initialize backed by system properties
         properties = new Properties(System.getProperties());
         propertySubstitutor = new VariableSubstitutor(properties);
-
+       
         // add izpack built in property
         setProperty("izpack.version", IZPACK_VERSION);
         setProperty("basedir", basedir);
@@ -865,4 +865,22 @@
         }
     }
 
+    
+    /**
+     * @return the conditions
+     */
+    public Map getConditions()
+    {
+        return this.packager.getRules();
+    }
+
+    
+    /**
+     * @param conditions the conditions to set
+     */
+    public void setConditions(Map conditions)
+    {
+        this.packager.setRules(conditions);        
+    }
+
 }

Modified: 
izpack-src/trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java    
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/compiler/CompilerConfig.java    
2007-11-29 14:02:17 UTC (rev 1918)
@@ -67,6 +67,8 @@
 import com.izforge.izpack.UpdateCheck;
 import com.izforge.izpack.compiler.Compiler.CmdlinePackagerListener;
 import com.izforge.izpack.event.CompilerListener;
+import com.izforge.izpack.rules.Condition;
+import com.izforge.izpack.rules.RulesEngine;
 import com.izforge.izpack.util.Debug;
 import com.izforge.izpack.util.OsConstraint;
 import com.izforge.izpack.util.VariableSubstitutor;
@@ -319,6 +321,7 @@
 
         // We add all the information
         addVariables(data);
+        addConditions(data);
         addInfo(data);
         addGUIPrefs(data);
         addLangpacks(data);
@@ -1509,6 +1512,41 @@
         }
         notifyCompilerListener("addVariables", CompilerListener.END, data);
     }
+    
+    /**
+     * Parse conditions and add them to the compiler.
+     * @param data
+     * @throws CompilerException
+     */
+    protected void addConditions(XMLElement data) throws CompilerException
+    {
+        notifyCompilerListener("addConditions", CompilerListener.BEGIN, data);
+        // We get the condition list
+        XMLElement root = data.getFirstChildNamed("conditions");
+        Map conditions = compiler.getConditions();
+        if (root != null) {               
+            Iterator iter = root.getChildrenNamed("condition").iterator();
+            while (iter.hasNext())
+            {
+                XMLElement conditionel = (XMLElement) iter.next();
+                Condition condition = 
RulesEngine.analyzeCondition(conditionel);
+                if (condition != null) {
+                    String conditionid = condition.getId();
+                    if (conditions.containsKey(conditionid))
+                    {
+                        parseWarn(conditionel, "Condition with id '" + 
conditionid + "' will be overwritten");
+                    }
+                    conditions.put(conditionid, condition);
+                    
+                }
+                else {
+                    parseWarn(conditionel, "Condition couldn't be 
instantiated.");
+                }
+            }
+        }        
+        notifyCompilerListener("addConditions", CompilerListener.END, data);
+    }
+    
 
     /**
      * Properties declaration is a fragment of the xml file. For example:

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/compiler/IPackager.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/compiler/IPackager.java 
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/compiler/IPackager.java 
2007-11-29 14:02:17 UTC (rev 1918)
@@ -21,6 +21,7 @@
 import java.io.File;
 import java.net.URL;
 import java.util.List;
+import java.util.Map;
 import java.util.Properties;
 
 import net.n3.nanoxml.XMLElement;
@@ -182,4 +183,14 @@
      * @param data - the xml-element packaging from the install.xml
      */
     public abstract void addConfigurationInformation(XMLElement data);
+    
+    /**
+     * @return the rules
+     */
+    public abstract Map getRules();    
+    
+    /**
+     * @param rules the rules to set
+     */
+    public abstract void setRules(Map rules);
 }
\ No newline at end of file

Modified: 
izpack-src/trunk/src/lib/com/izforge/izpack/compiler/MultiVolumePackager.java
===================================================================
--- 
izpack-src/trunk/src/lib/com/izforge/izpack/compiler/MultiVolumePackager.java   
    2007-11-27 21:02:03 UTC (rev 1917)
+++ 
izpack-src/trunk/src/lib/com/izforge/izpack/compiler/MultiVolumePackager.java   
    2007-11-29 14:02:17 UTC (rev 1918)
@@ -131,19 +131,7 @@
 
         sendStart();
 
-        // write the primary jar. MUST be first so manifest is not overwritten
-        // by
-        // an included jar
-        System.out.println("Writing skeleton installer.");
-        writeSkeletonInstaller();
-        writeInstallerObject("info", info);
-        writeInstallerObject("vars", variables);
-        writeInstallerObject("GUIPrefs", guiPrefs);
-        writeInstallerObject("panelsOrder", panelList);
-        writeInstallerObject("customData", customDataList);
-        writeInstallerObject("langpacks.info", langpackNameList);
-        writeInstallerResources();
-        writeIncludedJars();
+        writeInstaller();
 
         // Pack File Data may be written to separate jars
         String packfile = baseFile.getParent() + File.separator + 
INSTALLER_PAK_NAME;
@@ -192,7 +180,7 @@
      * Write skeleton installer to primary jar. It is just an included jar, 
except that we copy the
      * META-INF as well.
      */
-    private void writeSkeletonInstaller() throws IOException
+    protected void writeSkeletonInstaller() throws IOException
     {
         sendMsg("Copying the skeleton installer", 
PackagerListener.MSG_VERBOSE);
         
@@ -267,7 +255,7 @@
     /**
      * Write an arbitrary object to primary jar.
      */
-    private void writeInstallerObject(String entryName, Object object) throws 
IOException
+    protected void writeInstallerObject(String entryName, Object object) 
throws IOException
     {
         primaryJarStream.putNextEntry(new ZipEntry(entryName));
         ObjectOutputStream out = new ObjectOutputStream(primaryJarStream);
@@ -277,7 +265,7 @@
     }
 
     /** Write the data referenced by URL to primary jar. */
-    private void writeInstallerResources() throws IOException
+    protected void writeInstallerResources() throws IOException
     {
         sendMsg("Copying " + installerResourceURLMap.size() + " files into 
installer");
 
@@ -300,7 +288,7 @@
     }
 
     /** Copy included jars to primary jar. */
-    private void writeIncludedJars() throws IOException
+    protected void writeIncludedJars() throws IOException
     {
         sendMsg("Merging " + includedJarURLs.size() + " jars into installer");
 
@@ -497,22 +485,8 @@
 
         return jar;
     }
-
+    
     /**
-     * Copies contents of one jar to another.
-     * 
-     * <p>
-     * TODO: it would be useful to be able to keep signature information from 
signed jar files, can
-     * we combine manifests and still have their content signed?
-     * 
-     * @see #copyStream(InputStream, OutputStream)
-     */
-    private void copyZip(ZipInputStream zin, ZipOutputStream out) throws 
IOException
-    {
-        copyZip(zin, out, null);
-    }
-
-    /**
      * Copies specified contents of one jar to another.
      * 
      * <p>
@@ -664,4 +638,13 @@
        this.configdata = data;        
     }
 
+    /* (non-Javadoc)
+     * @see com.izforge.izpack.compiler.PackagerBase#writePacks()
+     */
+    protected void writePacks() throws Exception
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
 }
\ No newline at end of file

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Packager.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Packager.java  
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/compiler/Packager.java  
2007-11-29 14:02:17 UTC (rev 1918)
@@ -114,23 +114,8 @@
 
         sendStart();
         
-        // write the primary jar. MUST be first so manifest is not overwritten
-        // by
-        // an included jar
-        writeSkeletonInstaller();
+        writeInstaller();
 
-        writeInstallerObject("info", info);
-        writeInstallerObject("vars", variables);
-        writeInstallerObject("GUIPrefs", guiPrefs);
-        writeInstallerObject("panelsOrder", panelList);
-        writeInstallerObject("customData", customDataList);
-        writeInstallerObject("langpacks.info", langpackNameList);
-        writeInstallerResources();
-        writeIncludedJars();
-
-        // Pack File Data may be written to separate jars
-        writePacks();
-
         // Finish up. closeAlways is a hack for pack compressions other than
         // default. Some of it (e.g. BZip2) closes the slave of it also.
         // But this should not be because the jar stream should be open 
@@ -149,7 +134,7 @@
      * Write skeleton installer to primary jar. It is just an included jar, 
except that we copy the
      * META-INF as well.
      */
-    private void writeSkeletonInstaller() throws IOException
+    protected void writeSkeletonInstaller() throws IOException
     {
         sendMsg("Copying the skeleton installer", 
PackagerListener.MSG_VERBOSE);
 
@@ -166,7 +151,7 @@
     /**
      * Write an arbitrary object to primary jar.
      */
-    private void writeInstallerObject(String entryName, Object object) throws 
IOException
+    protected void writeInstallerObject(String entryName, Object object) 
throws IOException
     {
         primaryJarStream.putNextEntry(new 
org.apache.tools.zip.ZipEntry(entryName));
         ObjectOutputStream out = new ObjectOutputStream(primaryJarStream);
@@ -176,7 +161,7 @@
     }
 
     /** Write the data referenced by URL to primary jar. */
-    private void writeInstallerResources() throws IOException
+    protected void writeInstallerResources() throws IOException
     {
         sendMsg("Copying " + installerResourceURLMap.size() + " files into 
installer");
 
@@ -199,7 +184,7 @@
     }
 
     /** Copy included jars to primary jar. */
-    private void writeIncludedJars() throws IOException
+    protected void writeIncludedJars() throws IOException
     {
         sendMsg("Merging " + includedJarURLs.size() + " jars into installer");
 
@@ -216,7 +201,7 @@
     /**
      * Write Packs to primary jar or each to a separate jar.
      */
-    private void writePacks() throws Exception
+    protected void writePacks() throws Exception
     {
         final int num = packsList.size();
         sendMsg("Writing " + num + " Pack" + (num > 1 ? "s" : "") + " into 
installer");

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/compiler/PackagerBase.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/compiler/PackagerBase.java      
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/compiler/PackagerBase.java      
2007-11-29 14:02:17 UTC (rev 1918)
@@ -23,6 +23,7 @@
 package com.izforge.izpack.compiler;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -81,6 +82,9 @@
 
     /** The langpack URLs keyed by locale name (e.g. de_CH). */
     protected Map installerResourceURLMap = new HashMap();
+    
+    /** the conditions */
+    protected Map rules = new HashMap();
 
     /** Jar file URLs who's contents will be copied into the installer. */
     protected Set includedJarURLs = new HashSet();
@@ -290,4 +294,48 @@
         this.listener = listener;
     }
 
+    
+    /**
+     * @return the rules
+     */
+    public Map getRules()
+    {
+        return this.rules;
+    }
+
+    
+    /**
+     * @param rules the rules to set
+     */
+    public void setRules(Map rules)
+    {
+        this.rules = rules;
+    }
+
+    
+    protected void writeInstaller() throws Exception{
+        // write the primary jar. MUST be first so manifest is not overwritten
+        // by
+        // an included jar
+        writeSkeletonInstaller();
+
+        writeInstallerObject("info", info);
+        writeInstallerObject("vars", variables);
+        writeInstallerObject("GUIPrefs", guiPrefs);
+        writeInstallerObject("panelsOrder", panelList);
+        writeInstallerObject("customData", customDataList);
+        writeInstallerObject("langpacks.info", langpackNameList);
+        writeInstallerObject("rules", rules);
+        writeInstallerResources();
+        writeIncludedJars();
+
+        // Pack File Data may be written to separate jars
+        writePacks();
+    }
+    
+    protected abstract void writeInstallerObject(String entryName, Object 
object) throws IOException;
+    protected abstract void writeSkeletonInstaller() throws IOException;    
+    protected abstract void writeInstallerResources() throws IOException;
+    protected abstract void writeIncludedJars() throws IOException;
+    protected abstract void writePacks() throws Exception;
 }

Modified: 
izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java   
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/installer/InstallerFrame.java   
2007-11-29 14:02:17 UTC (rev 1918)
@@ -48,6 +48,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.io.OutputStreamWriter;
@@ -268,13 +269,30 @@
      */
     protected void loadConditions()
     {
+        // try to load already parsed conditions
+        try {
+            InputStream in = 
InstallerFrame.class.getResourceAsStream("/rules");
+            ObjectInputStream objIn = new ObjectInputStream(in);
+            Map rules = (Map) objIn.readObject();
+            if ((rules != null) && (rules.size() != 0)) {
+                this.rules = new RulesEngine(rules,installdata);
+            }
+            objIn.close();
+        }
+        catch (Exception e) {
+            
+        }
+        if (rules != null) {
+            // rules already read
+            return;
+        }
         try
         {
             InputStream input = null;
             input = this.getResource(CONDITIONS_SPECRESOURCENAME);
             if (input == null)
             {
-                this.rules = new RulesEngine(null, installdata);
+                this.rules = new RulesEngine((XMLElement) null, installdata);
                 return;
             }
 
@@ -291,7 +309,7 @@
         {
             Debug.trace("Can not find optional resource " + 
CONDITIONS_SPECRESOURCENAME);
             // there seem to be no conditions
-            this.rules = new RulesEngine(null, installdata);
+            this.rules = new RulesEngine((XMLElement) null, installdata);
         }
     }
 

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/rules/Condition.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/rules/Condition.java    
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/rules/Condition.java    
2007-11-29 14:02:17 UTC (rev 1918)
@@ -21,6 +21,8 @@
 
 package com.izforge.izpack.rules;
 
+import java.io.Serializable;
+
 import com.izforge.izpack.installer.AutomatedInstallData;
 import net.n3.nanoxml.XMLElement;
 
@@ -29,7 +31,7 @@
  *
  * @author Dennis Reil, <Dennis.Reil-fQBD4tR+0iSzQB+pC5nmwQ@xxxxxxxxxxxxxxxx>
  */
-public abstract class Condition
+public abstract class Condition implements Serializable
 {
 
     protected String id;

Modified: izpack-src/trunk/src/lib/com/izforge/izpack/rules/RulesEngine.java
===================================================================
--- izpack-src/trunk/src/lib/com/izforge/izpack/rules/RulesEngine.java  
2007-11-27 21:02:03 UTC (rev 1917)
+++ izpack-src/trunk/src/lib/com/izforge/izpack/rules/RulesEngine.java  
2007-11-29 14:02:17 UTC (rev 1918)
@@ -50,19 +50,28 @@
 
     protected static InstallData installdata;
 
+    private RulesEngine() {
+        conditionsmap = new Hashtable();
+        this.panelconditions = new Hashtable();
+        this.packconditions = new Hashtable();
+        this.optionalpackconditions = new Hashtable();
+    }
+    
     /**
      * 
      */
     public RulesEngine(XMLElement conditionsspecxml, InstallData installdata)
     {
-        this.conditionsspec = conditionsspecxml;
-        conditionsmap = new Hashtable();
-        this.panelconditions = new Hashtable();
-        this.packconditions = new Hashtable();
-        this.optionalpackconditions = new Hashtable();
+        this();
+        this.conditionsspec = conditionsspecxml;        
         RulesEngine.installdata = installdata;
         this.readConditions();
     }
+    
+    public RulesEngine(Map rules, InstallData installdata) {
+        this();
+        RulesEngine.installdata = installdata;
+    }
 
     /**
      * Checks if an attribute for an xmlelement is set.
@@ -103,7 +112,8 @@
                     + conditiontype.substring(1, conditiontype.length());
                 conditionclassname += "Condition";
             }
-            ClassLoader loader = ClassLoader.getSystemClassLoader();
+            //ClassLoader loader = ClassLoader.getSystemClassLoader();
+            ClassLoader loader = RulesEngine.class.getClassLoader();
             try
             {
                 Class conditionclass = loader.loadClass(conditionclassname);
@@ -115,14 +125,17 @@
             catch (ClassNotFoundException e)
             {
                 Debug.trace(conditionclassname + " not found.");
+                e.printStackTrace();                
             }
             catch (InstantiationException e)
             {
                 Debug.trace(conditionclassname + " couldn't be instantiated.");
+                e.printStackTrace();
             }
             catch (IllegalAccessException e)
             {
                 Debug.trace("Illegal access to " + conditionclassname);
+                e.printStackTrace();
             }            
         }
         return result;


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

Recently Viewed:
web.pylons.gene...    hurd.l4/2002-10...    kernel.commits....    user-groups.lin...    yellowdog.gener...    java.drools.use...    security.openva...    package-managem...    linux.debian.us...    qnx.openqnx.dev...    genealogy.gramp...    file-systems.if...    voip.wengophone...    tex.context/200...    ietf.smime/2003...    audio.csound.de...    culture.region....    xfree86.devel/2...    mobile.kannel.u...    distributed.con...    education.engli...    org.user-groups...    bug-tracking.gn...    recreation.bicy...   
Home | blog view | USPTO Patent Archive | advertise | OSDir is an inevitable website. super tiny logo

Free Magazines

Cisco News
Receive a free quarterly e-newsletter with exclusive articles on how Cisco IT uses its own products and solutions to enable the business.
subscribe

Systems Management News, the newspaper for IT systems administration and data center managers! Each issue of Systems Management News is chock-full of news and analysis to help you understand what's happening in your field.
subscribe

The Enterprise Newsweekly eWeek is the essential technology information source for builders of e-business.
subscribe

Oracle Magazine Oracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world's largest enterprise software company.
subscribe

Total Telecom Total Telecom is "The Economist of the communications industry".
subscribe