WOPath, Ant 1.7, Odd Behavior Change

From: Chuck Hill (chil..lobal-village.net)
Date: Fri Feb 22 2008 - 19:06:43 EST

  • Next message: Chuck Hill: "Re: WOPath, Ant 1.7, Odd Behavior Change"

    WOPath is broken on Leopard with Ant 1.7, it works fine with 1.6.5.
    Under 1.7, it does not see the jars for any of the frameworks. If you
    run Ant with -debug -verbose, you see this:

    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    cadrejars.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    dbunit-2.2.1.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    ganymed.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    GVCWOProjectAntTasks.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/jass-
    rt.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    javasvn.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    jxl.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    log4j-1.2.14.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    svnant.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    svnClientAdapter.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    svnjavahl.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    taglets.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    testng-5.6-jdk14.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadreJars.framework/Resources/Java/
    woproject.jar from path as it doesn't exist
    dropping /Library/Frameworks/CadrePrototypes.framework/Resources/Java/
    cadreprototypes.jar from path as it doesn't exist
    dropping /Library/Frameworks/ERExtensions.framework/Resources/Java/
    ERExtensions.jar from path as it doesn't exist
    dropping /Library/Frameworks/FrontBasePlugIn.framework/Resources/Java/
    FrontBasePlugIn.jar from path as it doesn't exist
    dropping /Library/Frameworks/GVCEOFExtensions.framework/Resources/Java/
    gvceofextensions.jar from path as it doesn't exist
    dropping /Library/Frameworks/GVCFoundation.framework/Resources/Java/
    gvcfoundation.jar from path as it doesn't exist
    dropping /Library/Frameworks/GVCWOExtensions.framework/Resources/Java/
    gvcwoextensions.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaWOExtensions.framework/Resources/Java/
    JavaWOExtensions.jar from path as it doesn't exist
    dropping /Library/Frameworks/MicrosoftPlugIn.framework/Resources/Java/
    microsoftplugin.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaEOAccess.framework/Resources/Java/
    javaeoaccess.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaEOControl.framework/Resources/Java/
    javaeocontrol.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaFoundation.framework/Resources/Java/
    javafoundation.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaJDBCAdaptor.framework/Resources/Java/
    javajdbcadaptor.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaWebObjects.framework/Resources/Java/
    javawebobjects.jar from path as it doesn't exist
    dropping /Library/Frameworks/JavaXML.framework/Resources/Java/
    javaxml.jar from path as it doesn't exist

    Note that it is missing the /System and /Users/chuck prefixes on the
    paths.

    I have discovered that if I change
    FrameworkSet.SortedDirectoryScanner, in this method
            public synchronized String[] getIncludedFiles()
    and comment out this line:

    for (int i = 0; i < frameworkJars.length; i++)
    {
    // frameworkJars[i] = frameworkJars[i].substring(dirLength);
    }

    Note that this breaks API:

    // The results of calling jarsPaths() on the FrameworkSet is a
    // fully qualified path. This creates a problem as FileSet qualifies
    // these file paths with the directory. To accomodate this, we
    // trim off the root dir. This will be added back after
    getIncludedFiles()
    // is called. This (hack) was done instead of making a parallel
    // implementation of jarsPath() that returns a partial path.

    That it now works. I have also built some code that does not use
    WOPath and this change also works fine.

    This method is called from here:

    [wocompile] at org.objectstyle.woproject.ant.FrameworkSet
    $SortedDirectoryScanner.getIncludedFiles(Unknown Source)
    [wocompile] at
    org.apache.tools.ant.types.FileSet.iterator(FileSet.java:69)
    [wocompile] at
    org.apache.tools.ant.types.resources.Union.getCollection(Union.java:105)
    [wocompile] at
    org.apache.tools.ant.types.resources.Union.getCollection(Union.java:88)
    [wocompile] at
    org
    .apache
    .tools
    .ant
    .types
    .resources
    .BaseResourceCollectionContainer
    .cacheCollection(BaseResourceCollectionContainer.java:244)
    [wocompile] at
    org
    .apache
    .tools
    .ant
    .types
    .resources
    .BaseResourceCollectionContainer
    .iterator(BaseResourceCollectionContainer.java:120)
    [wocompile] at org.apache.tools.ant.types.Path.iterator(Path.java:687)
    [wocompile] at org.apache.tools.ant.types.Path.iterator(Path.java:684)
    [wocompile] at
    org.apache.tools.ant.types.resources.Union.getCollection(Union.java:105)
    [wocompile] at
    org.apache.tools.ant.types.resources.Union.list(Union.java:67)
    [wocompile] at org.apache.tools.ant.types.Path.list(Path.java:356)
    [wocompile] at org.apache.tools.ant.types.Path.addExisting(Path.java:
    327)
    [wocompile] at org.apache.tools.ant.types.Path.addExisting(Path.java:
    315)
    [wocompile] at
    org.apache.tools.ant.types.Path.concatSpecialPath(Path.java:560)
    [wocompile] at
    org.apache.tools.ant.types.Path.concatSystemClasspath(Path.java:512)
    [wocompile] at
    org
    .apache
    .tools
    .ant
    .taskdefs
    .compilers
    .DefaultCompilerAdapter
    .getCompileClasspath(DefaultCompilerAdapter.java:152)

    Does anyone have any insight into why this is different under 1.7?

    Chuck

    -- 
    

    Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems. http://www.global-village.net/products/practical_webobjects



    This archive was generated by hypermail 2.0.0 : Fri Feb 22 2008 - 19:08:18 EST