The JDO project does signature checking using reflection on a jar file. The expected values of reflection are stored in a file that looks a lot like the signature of the class itself.

Here's a snippet of the signature definition file:

public interface javax.jdo.datastore.JDOConnection {
    public Object getNativeConnection();
    public void close();
}

public interface javax.jdo.datastore.Sequence {
    public String getName();
    public Object next();
    public void allocate(int additional);
    public Object current();
    public long nextValue();
    public long currentValue();
}

The code is pretty simple and can just be taken as is in source.

http://svn.apache.org/viewcvs.cgi/db/jdo/trunk/tck/src/java/org/apache/jdo/tck/api/SignatureTest.java

The real work is in the file org/apache/jdo/tck/util/signature/ SignatureVerifier.java

Craig

On Dec 5, 2010, at 3:24 AM, Sim IJskes - QCG wrote:

On 05-12-10 02:24, Peter Firmstone wrote:
Sim IJskes - QCG wrote:
Is there a tool that we can use to verify API compatibility? So we can
make sure we do not call methods that do not exist?

I've been pondering bytecode analysis.

I think thats the only way to do it. Compile to jars and verify against API specs.

We have just such a tool, have a look at in com.sun.jini.tool.classdepend It needs to be extended to include method signatures, currently it just

One minor detail. It only needs to be extended.

If we don't go for a complete tool, we need to make profiles. The profile should contain class version range (who knows where these are documented? jvms only lists until 1.2) method signatures and access modifiers. Whe can read the signatures from the (runtime) class files, the class version we specify manually. To verify we would scan all the bytecode, look for method calls and verify existance and access.

We would basically recreate the bytecode verifier. I haven't reserarched how accessible it is in the tools.jar and how easy it would be to feed it profiles. I also haven't looked at harmony, which also should have a verifier.

I prefer a tool ready build. :-) Don't mind debugging it.

Gr. Sim


--
QCG, Software voor het MKB, 071-5890970, http://www.qcg.nl
Quality Consultancy Group b.v., Leiderdorp, Kvk Den Haag: 28088397

Craig L Russell
Architect, Oracle
http://db.apache.org/jdo
408 276-5638 mailto:[email protected]
P.S. A good JDO? O, Gasp!

Reply via email to