Menu

Jars with attached Source

Help
2008-08-03
2013-04-08
  • Dirk Faulhaber

    Dirk Faulhaber - 2008-08-03

    i moved one of my sources into a jar and attached a source directory. in particular
    i moved code of class Util.java into a jar. Now i have a problem with finding references
    again.

    Using
     

      child(?this,?X),calls(?X,?M,?L),name(?M,"getInstance")

    to find all calls to getInstance in java source

    public class UtilCall {

       public void test() throws InstantiationException, IllegalAccessException {

       Object o = Util.getInstance("someName");
       }
    }

    gives me an empty result. if i have Util.java in a Java File of the project, i do
    get a result from my jquery above.

    i debugged the newest jquery source and found that

    UtilCall.java is parsed by a CompilationUnitBucket and
    Util.class with attached source by a ClassFileBucket

    then i was lost, because i could not see how facts were created and inserted and
    how these two types of visitor differ or not.

    using jars with attached sources helps me to discover usages of thirdparty apis.

    thanks for any help.

     
    • Lloyd Markle

      Lloyd Markle - 2008-08-07

      The difference is quite subtle.  There is a flag inside the JQueryBackendPlugin class called detailedClassFiles which may solve the problem.  This was implemented well before I started work on the project and has long been disabled mainly because we couldn't scale the database well.  It may be worth investigating again since we've made improvements to Tyruba.

      We have no plans for that at the moment, but if you cross your fingers, the ancient code that builds detailed class files may work (or be close to working)

      Lloyd

       
      • Dirk Faulhaber

        Dirk Faulhaber - 2008-08-13

        i tried that flag. i did not help. well i saw some details on the fact generation. maybe i dig deeper into it because i also thought about generating my own facts.

        in addition i saw that there are two ClassFileBucket classes:

        1) ca.ubc.jquery.resource.java.tyruba.ClassFileBucket
        2) ca.ubc.jquery.engine.tyruba.java.ClassFileBucket

        no 1) is used while no 2) contains the flag you mentioned. it is just hard coded in 1). the longer factbase refresh time and debugging confirmed that i set the flag correctly.

         
    • Lloyd Markle

      Lloyd Markle - 2008-08-14

      Good observation, we do indeed have two copies of this class although I expect the ca.ubc.jquery.engine.tyruba.java package to disappear in the near future.

      We're in the process of migrating to the newer resource strategy because, in version 4.0.2, we've significantly reduced the size of fact identifiers which cuts the factbase storage size in half.  If you make any changes/additions, I recommend doing so to the classes in ca.ubc.jquery.resource.java.tyruba

      If you're extending the factbase you may want to check out the recently posted tutorial in the wiki at: http://jquery.wiki.sourceforge.net/Java+Resource+Tutorial+on+Import+Declarations which provides a guide to adding import facts to the JQuery factbase.

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.