def infer_classpath
      dir = ENV['CATISSUE_CLIENT_HOME'] || '.'
      logger.info("Inferring the class path from directory #{dir}...")
      # Hunt for the client directories
      clt_dir = client_directory(dir, 'caTissueSuite_Client')
      de_dir = client_directory(dir, 'catissue_de_integration_client')
      dirs = [client_subdirectory(clt_dir, 'conf'),
        client_subdirectory(de_dir, 'conf'),
        client_subdirectory(clt_dir, 'lib'),
        client_subdirectory(de_dir, 'lib')
      ]
      
      # caTissue 1.1.2 has an extra directory.
      clt_lib = File.expand_path('lib', dir)
      dirs << clt_lib if File.directory?(clt_lib)
      
      # Make a semi-colon separated path string.
      path = dirs.join(';')
      logger.info("Inferred the class path #{path}.")
      path
    end
def infer_classpath
      dir = ENV['CATISSUE_CLIENT_HOME'] || '.'
      logger.info("Inferring the class path from directory #{dir}...")
      # Hunt for the client directories
      clt_dir = client_directory(dir, 'caTissueSuite_Client')
      de_dir = client_directory(dir, 'catissue_de_integration_client')
      dirs = [client_subdirectory(clt_dir, 'conf'),
        client_subdirectory(de_dir, 'conf'),
        client_subdirectory(clt_dir, 'lib'),
        client_subdirectory(de_dir, 'lib')
      ]
      
      # caTissue 1.1.2 has an extra directory.
      clt_lib = File.expand_path('lib', dir)
      dirs << clt_lib if File.directory?(clt_lib)
      
      # Make a semi-colon separated path string.
      path = dirs.join(';')
      logger.info("Inferred the class path #{path}.")
      path
    end
@quirk caTissue 1.2 the caTissue API class path is sensitive to order in subtle ways that
   caTissue 1.1.2 is not. The caTissue client +build.xml+ defines a +cp+ classpath
   property which was used to run a caTissue 1.1.1 example.

   However, the example was removed in caTissue 1.1.2. As of 1.1.2, the +cp+ property is no
   longer referenced in the client +build.xml+. Rather, the classpath is defined inline
   in the task with a small but important change: +cp+ placed the config directories
   before the jar files, whereas the inline definition placed the configs after the jars.

   This difference does not present a problem in caTissue 1.1.2, but the confusion was
   carried over to caTissue 1.2 where it does cause a problem. Unlike caTissue 1.1.2,
   in 1.2 the +DynamicExtension.jar+ is redundantly included in both the client and the
   declient lib. Furthermore, +DynamicExtension.jar+ contains an invalid and unnecessary
   +remoteServices.xml+, which references a non-existent +RemoteSDKApplicationService+.

   If the caTissue path is defined with the jars preceding the configs, then in 1.2 an
   obscure +PropertyAccessExceptionsException+ exception is raised indicating that
   +RemoteSDKApplicationService+ is an invalid class name. The cause is the classpath
   precedence of jars prior to configs.

   The caRuby FAQ shows an example +~/.catissue+ +path+ property that was originally
   borrowed from the caTissue 1.1.1 client example. This incorrect precedence was a time
   bomb that exploded in 1.2. This 1.2 regression is now noted in the FAQ.

 @quirk caTissue 1.2 per the caTissue API client Ant build file, the +catissuecore.jar+
   should not be included in the client class path, even though it is in the client lib
   directory.