This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "UNNAMED PROJECT".
The branch, jh-symbols has been updated via 915286c76e5cdb49983049fbc4bbdb50ff0a30f0 (commit) from b852c25eb2f2d985a071d844b7bba66d3134b812 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 915286c76e5cdb49983049fbc4bbdb50ff0a30f0 Author: Niels Thykier <ni...@thykier.net> Date: Sat Jul 30 12:19:57 2011 +0200 Check base classes and interfaces for missing symbols ----------------------------------------------------------------------- Summary of changes: .../javahelper/symbols/cmd/DependencyProgram.java | 58 +++++++++++++++++--- 1 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/org/debian/javahelper/symbols/cmd/DependencyProgram.java b/src/org/debian/javahelper/symbols/cmd/DependencyProgram.java index 6ba44a1..caecb00 100644 --- a/src/org/debian/javahelper/symbols/cmd/DependencyProgram.java +++ b/src/org/debian/javahelper/symbols/cmd/DependencyProgram.java @@ -51,19 +51,46 @@ public class DependencyProgram implements IProgram { continue; } cs = s.asClassSymbol(); - for(ISymbol c : cs.getSymbols()){ - if(nm.remove(c.getName()) != null){ - debug("N: found-class-symbol: " + c.getFullSymbolName()); - neededVer = highest(vMap, neededVer, c.getVersion()); - if(nm.size() < 1) { - break; - } - } - } + neededVer = updateNeededSymbols(cs, nm, vMap, neededVer); if(nm.size() < 1) { neededVer = highest(vMap, neededVer, cs.getVersion()); neededCl.remove(clname); debug("N: satisfied-class: " + clname); + } else { + // We still need symbols for this class... + // Most likely they will be provided by the parent, so lets check + String pcl = cs.getParentClassName(); + ISymbol cparent = prov.getSymbol(pcl); + IClassSymbol csp; + for( ; cparent != null ; cparent = prov.getSymbol(pcl)){ + if(!cparent.isClassSymbol() || cparent.getClassName().startsWith("java/lang/")){ + break; + } + csp = cparent.asClassSymbol(); + pcl = csp.getParentClassName(); + neededVer = updateNeededSymbols(csp, nm, vMap, neededVer); + } + if(nm.size() < 1) { + neededVer = highest(vMap, neededVer, cs.getVersion()); + neededCl.remove(clname); + debug("N: satisfied-class (via base-class): " + clname); + } else { + // Check interfaces + for(String it : cs.getImplementedInterfaceNames()){ + ISymbol isym = prov.getSymbol(it); + IClassSymbol clsym; + if(isym == null || !isym.isClassSymbol() || it.startsWith("java/lang/")){ + continue; + } + clsym = isym.asClassSymbol(); + neededVer = updateNeededSymbols(clsym, nm, vMap, neededVer); + } + if(nm.size() < 1) { + neededVer = highest(vMap, neededVer, cs.getVersion()); + neededCl.remove(clname); + debug("N: satisfied-class (via interface): " + clname); + } + } } } else { String fn = s.getFullSymbolName(); @@ -126,6 +153,19 @@ public class DependencyProgram implements IProgram { return v2; } + private static String updateNeededSymbols(IClassSymbol cs, Map<String, Boolean> nm, Map<String, Boolean> vMap, String neededVer) throws Exception{ + for(ISymbol c : cs.getSymbols()){ + if(nm.remove(c.getName()) != null){ + debug("N: found-class-symbol: " + c.getFullSymbolName()); + neededVer = highest(vMap, neededVer, c.getVersion()); + if(nm.size() < 1) { + break; + } + } + } + return neededVer; + } + private static void debug(String msg){ if(doutput) { System.out.println(msg); hooks/post-receive -- UNNAMED PROJECT _______________________________________________ pkg-java-commits mailing list pkg-java-comm...@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits