|
View:
New views
11 Messages
—
Rating Filter:
Alert me
|
|
|
JRuby debugging on V3 woes...Hi Martin,
I'm going to need to some assistance with and/or refactoring of this debug-commons beast. I have the follow dilemma -- I have an instrumented Grizzly + JRuby runtime that, via properties, can inject the IDE's rdebug script + arguments ahead of Rails in the embedded runtime initialization, which theoretically, ought to allow me to bind the NetBeans Ruby debugger to it. Ultimately, I want RubyDebuggerFactory to compose and execute the following command (or some variation thereof) $jdk.home/java -cp $server.home/modules/grizzly-jruby-$version.jar: $server.home/modules/grizzly-module-$version.jar: $jruby.home/lib/jruby.jar: $extra.jars -Djruby.home=$jruby.home -Dglassfish.rdebug=/$rdebug.home/$rdebug.script -Dglassfish.rdebug.port=$rdebug.port -Dglassfish.rdebug.version=$rdebug.version -Dglassfish.rdebug.iosynch=$path.to.rdebug.iosynch com.sun.grizzly.standalone.JRuby -p $rails.http.port -n 1 $rails.root (The $<names> are substituted for reasonable values at runtime of course.) This can't be done because the debug-commons api is too restrictive. I need to adjust what is performed by RubyDebuggerFactory.startRubyDebug() and in what order. I can't not call it, because it calls RubyDebuggerFactory.startDebugger() which is private, and ultimately the method that needs to be called to get the proxy created and synchronized correctly. Here are more specifics... 1) Hardcoded to own the process launch code for the debug process (RubyDebuggerFactory#155-156 -> "pb.start()" initiates the debuggee process). This prohibits negotiating with and binding to processes that are already running or must be managed by another source (e.g. an existing server). I thought I had worked around (1) by coming up with the plain Grizzy + JRuby concept, but then I hit this... 2) Hardcoded that the debug process MUST be a ruby interpreter (RubyDebuggerFactory#106 - interpreter is first argument to process builder stack, where interpreter comes from 'platform.getInterpreter()' in RubyDebugger.startDebugging(), #185). So I thought I could work around this with a new interpreter field in ExecutionDescriptor that delegated to the platform unless set, but then I hit this... 3) More hardcoding that the debug process CANNOT be the java command due to property syntax (RubyDebuggerFactory.startRubyDebug#109 - adjustForJRuby is hardcoded to add "-J-D" style properties immediately after the executable name which may be great for jruby, but causes a fatal error when processed by the java command directly.) I even managed a hack to work around this, but then was able confirm it's still DOA, because... 4) No matter what else you do, there are certain arguments that RubyDebuggerFactory.startRubyDebug() will put at the end of the command line (#108-#129) -- my hacks to get past #1-3 front loaded the arguments I needed for my process, but in the end, the argument processor for com.sun.grizzly.standalone.JRuby, the class I'm running, perceived these last arguments added by startRubyDebug() as illegal and terminated itself. Further non-fatal, but unfortunate restrictions -- 5) Dynamic port assignment for the rdebug port is wholly contained in class RubyDebuggerFactory.Descriptor and I need to know the port when I activate rdebug inside the server. I need it passed as "-Dglassfish.rdebug.port=####". Possible work around by changing RubyDebugger and using a static port or independent dynamic port algorithm. 6) rdebug-ide version is nice (RubyDebuggerFactory.startRubyDebug#118). But I don't want it passed in as an argument to debug. I need it passed in as "-Dglassfish.rdebug.version=_<version>_". 7) The io-synchronizer is nice (RubyDebuggerFactory.appendIOSynchronizer#182). But I don't want it passed in as "-r <path/script.rb>" -- I need it passed as "-Dglassfish.rdebug.iosynch=<path/script.rb>". Note: since RubyDebuggerFactory is not part of NetBeans, I cannot change it directly, only make observations and recommendations. I do not know who the committers are for this library, it's release schedule, stability guidelines, other clients and impact of changes thereof on them, etc. So... we need to talk and get some closure on this. -Peter --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...It wouldn't be fair for me to complain so much and not offer a solution,
so I'll see if I can suggest a block of changes to RubyDebuggerFactory that would accommodate #2-7 below. #1 is probably not doable in the 6.5 timeframe. -Peter Peter Williams wrote: > Hi Martin, > > I'm going to need to some assistance with and/or refactoring of this > debug-commons beast. I have the follow dilemma -- > > I have an instrumented Grizzly + JRuby runtime that, via properties, > can inject the IDE's rdebug script + arguments ahead of Rails in the > embedded runtime initialization, which theoretically, ought to allow > me to bind the NetBeans Ruby debugger to it. > > Ultimately, I want RubyDebuggerFactory to compose and execute the > following command (or some variation thereof) > > $jdk.home/java > -cp > $server.home/modules/grizzly-jruby-$version.jar: > $server.home/modules/grizzly-module-$version.jar: > $jruby.home/lib/jruby.jar: > $extra.jars > -Djruby.home=$jruby.home > -Dglassfish.rdebug=/$rdebug.home/$rdebug.script > -Dglassfish.rdebug.port=$rdebug.port > -Dglassfish.rdebug.version=$rdebug.version > -Dglassfish.rdebug.iosynch=$path.to.rdebug.iosynch > com.sun.grizzly.standalone.JRuby -p $rails.http.port -n 1 $rails.root > > (The $<names> are substituted for reasonable values at runtime of > course.) > > This can't be done because the debug-commons api is too restrictive. > I need to adjust what is performed by > RubyDebuggerFactory.startRubyDebug() and in what order. I can't not > call it, because it calls RubyDebuggerFactory.startDebugger() which is > private, and ultimately the method that needs to be called to get the > proxy created and synchronized correctly. Here are more specifics... > > 1) Hardcoded to own the process launch code for the debug process > (RubyDebuggerFactory#155-156 -> "pb.start()" initiates the debuggee > process). This prohibits negotiating with and binding to processes > that are already running or must be managed by another source (e.g. an > existing server). > > I thought I had worked around (1) by coming up with the plain Grizzy + > JRuby concept, but then I hit this... > > 2) Hardcoded that the debug process MUST be a ruby interpreter > (RubyDebuggerFactory#106 - interpreter is first argument to process > builder stack, where interpreter comes from > 'platform.getInterpreter()' in RubyDebugger.startDebugging(), #185). > > So I thought I could work around this with a new interpreter field in > ExecutionDescriptor that delegated to the platform unless set, but > then I hit this... > > 3) More hardcoding that the debug process CANNOT be the java command > due to property syntax (RubyDebuggerFactory.startRubyDebug#109 - > adjustForJRuby is hardcoded to add "-J-D" style properties immediately > after the executable name which may be great for jruby, but causes a > fatal error when processed by the java command directly.) > > I even managed a hack to work around this, but then was able confirm > it's still DOA, because... > > 4) No matter what else you do, there are certain arguments that > RubyDebuggerFactory.startRubyDebug() will put at the end of the > command line (#108-#129) -- my hacks to get past #1-3 front loaded the > arguments I needed for my process, but in the end, the argument > processor for com.sun.grizzly.standalone.JRuby, the class I'm running, > perceived these last arguments added by startRubyDebug() as illegal > and terminated itself. > > Further non-fatal, but unfortunate restrictions -- > > 5) Dynamic port assignment for the rdebug port is wholly contained in > class RubyDebuggerFactory.Descriptor and I need to know the port when > I activate rdebug inside the server. I need it passed as > "-Dglassfish.rdebug.port=####". Possible work around by changing > RubyDebugger and using a static port or independent dynamic port > algorithm. > > 6) rdebug-ide version is nice > (RubyDebuggerFactory.startRubyDebug#118). But I don't want it passed > in as an argument to debug. I need it passed in as > "-Dglassfish.rdebug.version=_<version>_". > > 7) The io-synchronizer is nice > (RubyDebuggerFactory.appendIOSynchronizer#182). But I don't want it > passed in as "-r <path/script.rb>" -- I need it passed as > "-Dglassfish.rdebug.iosynch=<path/script.rb>". > > Note: since RubyDebuggerFactory is not part of NetBeans, I cannot > change it directly, only make observations and recommendations. I do > not know who the committers are for this library, it's release > schedule, stability guidelines, other clients and impact of changes > thereof on them, etc. > > So... we need to talk and get some closure on this. > > -Peter > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@... > For additional commands, e-mail: dev-help@... > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Hi Peter,
Peter Williams wrote: > It wouldn't be fair for me to complain so much and not offer a > solution, so I'll see if I can suggest a block of changes to > RubyDebuggerFactory that would accommodate #2-7 below. That would be great, if you come with patches. You know the best your case, I can help with debug-commons in the case you need so. > #1 is probably not doable in the 6.5 timeframe. The #1 is more or less tracked here: http://www.netbeans.org/nonav/issues/show_bug.cgi?id=104473 But not planned for 6.5. But we could do some enhancements in debug-commons layer if really needed (you said you could workaround this) [...] > I do not know who the committers are for this library So far just me, based on work of Markus Barchfeld. Might be Aptana will switch to it one day as well. The library is IDE independent. > it's release schedule None. I.e. on demand. So no problem to release whenever. > stability guidelines There are bunch of unit tests which need to be stabilized, but should catch the regressions. I check this before releasing a new release. There are also bunch of test in NetBeans which subsequently test underlaying layer, debug-commons included. Those are kind of destabilized at the moment. I'm planning to stabilize both of those. Otherwise there is no "stabilized API" so changes are OK. In your case they would be backward-compatible anyway, I suppose. > other clients Just NetBeans so far, AFAIK. > So... we need to talk and get some closure on this. So if you come with patches just submit them to the debug-commons tracker or directly to me and I'll apply them. Again if you need any concrete help, let me know. Seems you understand the code pretty well. m. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Hi Martin, I have an idea I will be trying today. I have a few questions
How do I build this library (or group) and add it (them) to NetBeans? I checked out the tip for my investigation. Which tag do I need for a formal match between NetBeans 6.5 trunk and this code? -Peter Martin Krauskopf wrote: > Hi Peter, > > Peter Williams wrote: > > It wouldn't be fair for me to complain so much and not offer a > > solution, so I'll see if I can suggest a block of changes to > > RubyDebuggerFactory that would accommodate #2-7 below. > > That would be great, if you come with patches. You know the best your > case, I can help with debug-commons in the case you need so. > > > #1 is probably not doable in the 6.5 timeframe. > > The #1 is more or less tracked here: > http://www.netbeans.org/nonav/issues/show_bug.cgi?id=104473 > > But not planned for 6.5. But we could do some enhancements in > debug-commons layer if really needed (you said you could workaround > this) > > [...] > > I do not know who the committers are for this library > > So far just me, based on work of Markus Barchfeld. Might be Aptana will > switch to it one day as well. The library is IDE independent. > > > it's release schedule > > None. I.e. on demand. So no problem to release whenever. > > > stability guidelines > > There are bunch of unit tests which need to be stabilized, but should > catch the regressions. I check this before releasing a new release. > > There are also bunch of test in NetBeans which subsequently test > underlaying layer, debug-commons included. Those are kind of > destabilized at the moment. I'm planning to stabilize both of those. > > Otherwise there is no "stabilized API" so changes are OK. In your case > they would be backward-compatible anyway, I suppose. > > > other clients > > Just NetBeans so far, AFAIK. > > > So... we need to talk and get some closure on this. > > So if you come with patches just submit them to the debug-commons > tracker or directly to me and I'll apply them. > > Again if you need any concrete help, let me know. Seems you understand > the code pretty well. > > m. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@... > For additional commands, e-mail: dev-help@... > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Peter Williams wrote:
> Hi Martin, I have an idea I will be trying today. I have a few questions > > How do I build this library (or group) and add it (them) to NetBeans? > > I checked out the tip for my investigation. Which tag do I need for a > formal match between NetBeans 6.5 trunk and this code? $ cd /rubyforge.org/debug-commons/intermediate-java/trunk # sources $ ant clean jar $ cp dist/debug-commons-java-0.9.1.jar ..../netbeans-hg/main/o.rubyforge.debugcommons/external $ cd .../netbeans-hg/main/o.rubyforge.debugcommons $ ant clean netbeans netbeans-hg/main/o.rubyforge.debugcommons - is debug-commons-java.jar wrapper - with CNB org.rubyforge.debugcommons ruby.debugger has dependency on the wrapper m. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...The IDE depends on debug-commons.0.9.0.
0.9.1 includes incompatible changes that will need fixing. compile: [mkdir] Created dir: /space/peterw/trunk/ruby.debugger/build/classes [javac] Compiling 33 source files to /space/peterw/trunk/ruby.debugger/build/classes [javac] /space/peterw/trunk/ruby.debugger/src/org/netbeans/modules/ruby/debugger/breakpoints/RubyExceptionBreakpoint.java:46: org.netbeans.modules.ruby.debugger.breakpoints.RubyExceptionBreakpoint is not abstract and does not override abstract method getCondition() in org.rubyforge.debugcommons.model.IRubyBreakpoint [javac] public final class RubyExceptionBreakpoint extends RubyBreakpoint implements IRubyExceptionBreakpoint { [javac] ^ [javac] 1 error -Peter Martin Krauskopf wrote: > Peter Williams wrote: >> Hi Martin, I have an idea I will be trying today. I have a few >> questions >> >> How do I build this library (or group) and add it (them) to NetBeans? >> >> I checked out the tip for my investigation. Which tag do I need for >> a formal match between NetBeans 6.5 trunk and this code? > > $ cd /rubyforge.org/debug-commons/intermediate-java/trunk # sources > $ ant clean jar > $ cp dist/debug-commons-java-0.9.1.jar > ..../netbeans-hg/main/o.rubyforge.debugcommons/external > $ cd .../netbeans-hg/main/o.rubyforge.debugcommons > $ ant clean netbeans > > netbeans-hg/main/o.rubyforge.debugcommons > - is debug-commons-java.jar wrapper > - with CNB org.rubyforge.debugcommons > > ruby.debugger has dependency on the wrapper > > m. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@... > For additional commands, e-mail: dev-help@... > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...So it looks like 0.9.1 contains incomplete (or just not supported by
NetBeans yet) changes to the breakpoint api. I don't know what you intend to do about that. I worked around it in my code. Attached is a patch to RubyDebuggerFactory that adds a new startDebugger() entry point that allows parameterizing of the 4 rdebug related fields. I've been using it all day and it's been doing what I want. If you could review it, patch debug-commons and upgrade the library in the IDE, I would be able proceed to the next step of commiting the RubyDebugger and RailsProject changes that use this. I'm tracking the changes required for the overall debugging enhancement in http://www.netbeans.org/issues/show_bug.cgi?id=141254 This patch is attached to that issue and also to this email. Please let me know what you think, and if acceptable, when you can integrate a jar supporting this change into NetBeans trunk. -Peter Peter Williams wrote: > The IDE depends on debug-commons.0.9.0. > > 0.9.1 includes incompatible changes that will need fixing. > > compile: > [mkdir] Created dir: /space/peterw/trunk/ruby.debugger/build/classes > [javac] Compiling 33 source files to > /space/peterw/trunk/ruby.debugger/build/classes > [javac] > /space/peterw/trunk/ruby.debugger/src/org/netbeans/modules/ruby/debugger/breakpoints/RubyExceptionBreakpoint.java:46: > org.netbeans.modules.ruby.debugger.breakpoints.RubyExceptionBreakpoint > is not abstract and does not override abstract method getCondition() > in org.rubyforge.debugcommons.model.IRubyBreakpoint > [javac] public final class RubyExceptionBreakpoint extends > RubyBreakpoint implements IRubyExceptionBreakpoint { > [javac] ^ > [javac] 1 error > > > -Peter > > Martin Krauskopf wrote: >> Peter Williams wrote: >>> Hi Martin, I have an idea I will be trying today. I have a few >>> questions >>> >>> How do I build this library (or group) and add it (them) to NetBeans? >>> >>> I checked out the tip for my investigation. Which tag do I need for >>> a formal match between NetBeans 6.5 trunk and this code? >> >> $ cd /rubyforge.org/debug-commons/intermediate-java/trunk # sources >> $ ant clean jar >> $ cp dist/debug-commons-java-0.9.1.jar >> ..../netbeans-hg/main/o.rubyforge.debugcommons/external >> $ cd .../netbeans-hg/main/o.rubyforge.debugcommons >> $ ant clean netbeans >> >> netbeans-hg/main/o.rubyforge.debugcommons >> - is debug-commons-java.jar wrapper >> - with CNB org.rubyforge.debugcommons >> >> ruby.debugger has dependency on the wrapper >> >> m. >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscribe@... >> For additional commands, e-mail: dev-help@... >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@... > For additional commands, e-mail: dev-help@... > Index: org/rubyforge/debugcommons/RubyDebuggerFactory.java =================================================================== --- org/rubyforge/debugcommons/RubyDebuggerFactory.java (revision 504) +++ org/rubyforge/debugcommons/RubyDebuggerFactory.java (working copy) @@ -8,8 +8,11 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.rubyforge.debugcommons.RubyDebuggerProxy.DebuggerType; import org.rubyforge.debugcommons.model.RubyDebugTarget; @@ -130,6 +133,51 @@ return startDebugger(descriptor, args, timeout); } + /** + * Starts Kent Sibilev's ruby-debug session for the given script. Debugger + * waits on the first script's line. + * + * This method takes a preconstructed command line and inserts the computed + * rdebug values into the appropriate ${ } bracketed variables contained + * therein. Supported variables are: + * + * ${rdebug.path} = fully qualified to rdebug script + * ${rdebug.port} = port rdebug should use + * ${rdebug.version} = underscore bracketed version, or blank if unknown. + * ${rdebug.iosynch} = fully qualified path to io-synch script for rdebug. + * + * @param descriptor {@link Descriptor} to be used + * @param args + * @param rdebugExecutable fully qualified path to rdebug-ide + * @param timeout time to wait before assuming failure + * @return {@link RubyDebugTarget} instance + * @throws java.io.IOException + * @throws org.rubyforge.debugcommons.RubyDebuggerException + */ + public static RubyDebuggerProxy startRubyDebug( + final Descriptor descriptor, + final List<String> args, + final String rdebugExecutable, + final int timeout) throws IOException, RubyDebuggerException { + descriptor.setType(RUBY_DEBUG); + + Map<String, String> varMap = new HashMap<String, String>(); + varMap.put("rdebug.path", rdebugExecutable); + varMap.put("rdebug.port", Integer.toString(descriptor.getPort())); + String version = descriptor.getRubyDebugIDEVersion(); + varMap.put("rdebug.version", version != null ? ('_' + version + '_') : ""); + // would be nice to use a continuation here -- if the replacement was + // never needed, we wouldn't even create the file. + varMap.put("rdebug.iosynch", createIOSynchronizer()); + + int size = args.size(); + for(int i = 0; i < size; i++) { + args.set(i, substitute(args.get(i), varMap)); + } + + return startDebugger(descriptor, args, timeout); + } + private static void adjustForJRuby(List<String> args) { args.add("-J-Djruby.reflection=true"); args.add("-J-Djruby.compile.mode=OFF"); @@ -323,4 +371,35 @@ return sb.toString().trim(); } + private static Pattern pattern = Pattern.compile("\\$\\{([^}]+)\\}"); + + private static String substitute(String value, Map<String, String> varMap) { + try { + Matcher matcher = pattern.matcher(value); + boolean result = matcher.find(); + if(result) { + StringBuffer sb = new StringBuffer(); + do { + String key = matcher.group(1); + String replacement = varMap.get(key); + if(replacement == null) { + replacement = System.getProperty(key); + if(replacement != null) { + replacement = replacement.replace("\\", "\\\\").replace("$", "\\$"); + } else { + replacement = "\\$\\{" + key + "\\}"; + } + } + matcher.appendReplacement(sb, replacement); + result = matcher.find(); + } while(result); + matcher.appendTail(sb); + value = sb.toString(); + } + } catch(Exception ex) { + Util.severe(ex); + } + return value; + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Peter Williams wrote:
> The IDE depends on debug-commons.0.9.0. > > 0.9.1 includes incompatible changes that will need fixing. > > compile: > [mkdir] Created dir: /space/peterw/trunk/ruby.debugger/build/classes > [javac] Compiling 33 source files to > /space/peterw/trunk/ruby.debugger/build/classes > [javac] > /space/peterw/trunk/ruby.debugger/src/org/netbeans/modules/ruby/debugger/breakpoints/RubyExceptionBreakpoint.java:46: > org.netbeans.modules.ruby.debugger.breakpoints.RubyExceptionBreakpoint > is not abstract and does not override abstract method getCondition() in > org.rubyforge.debugcommons.model.IRubyBreakpoint > [javac] public final class RubyExceptionBreakpoint extends > RubyBreakpoint implements IRubyExceptionBreakpoint { > [javac] ^ > [javac] 1 error Good you have caught this. I had locally broken SVN repo/copy so 'svn st' showed me nothing and everything was compilable for me. But the file was not really committed. I've committed it now: http://rubyforge.org/pipermail/debug-commons-commits/2008-July/000224.html So should be OK now. Thanks for the catch, m. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Peter Williams wrote:
> So it looks like 0.9.1 contains incomplete (or just not supported by > NetBeans yet) changes to the breakpoint api. I don't know what you > intend to do about that. I worked around it in my code. Explained in previous email. [...] > If you could review it, patch debug-commons and upgrade the > library in the IDE Done: #489e7dc98412 Would appreciate simple unit tests for RubyDebuggerFactory#substitute and/or Javadoc. Method is not too easy to read for people not knowing about this thread. Thanks. m. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Martin Krauskopf wrote:
> Peter Williams wrote: >> So it looks like 0.9.1 contains incomplete (or just not supported by >> NetBeans yet) changes to the breakpoint api. I don't know what you >> intend to do about that. I worked around it in my code. > > Explained in previous email. > > [...] >> If you could review it, patch debug-commons and upgrade the library >> in the IDE > > Done: #489e7dc98412 > > Would appreciate simple unit tests for RubyDebuggerFactory#substitute > and/or Javadoc. Method is not too easy to read for people not knowing > about this thread. Thanks. It's not self documenting? ;-o I'll get you something, but after M2 freeze, ok? -Peter > > m. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscribe@... > For additional commands, e-mail: dev-help@... > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
|
|
Re: JRuby debugging on V3 woes...Peter Williams wrote:
[...] >> Would appreciate simple unit tests for RubyDebuggerFactory#substitute >> and/or Javadoc. Method is not too easy to read for people not knowing >> about this thread. Thanks. > It's not self documenting? ;-o Not that much, but I'm still learning that Java language, so might one day ;) > I'll get you something, but after M2 freeze, ok? Sure, no prob. m. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@... For additional commands, e-mail: dev-help@... |
| Free Forum Powered by Nabble | Forum Help |