From: <sha...@us...> - 2009-10-21 15:58:13
|
Revision: 10238 http://exist.svn.sourceforge.net/exist/?rev=10238&view=rev Author: shabanovd Date: 2009-10-21 15:58:05 +0000 (Wed, 21 Oct 2009) Log Message: ----------- [ignore] debugger junit test Added Paths: ----------- trunk/eXist/extensions/debuggee/test/ trunk/eXist/extensions/debuggee/test/org/ trunk/eXist/extensions/debuggee/test/org/exist/ trunk/eXist/extensions/debuggee/test/org/exist/debugger/ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Added: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java (rev 0) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2009-10-21 15:58:05 UTC (rev 10238) @@ -0,0 +1,108 @@ +/* + * eXist Open Source Native XML Database + * Copyright (C) 2009 The eXist Project + * http://exist-db.org + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id:$ + */ +package org.exist.debugger; + +import static org.junit.Assert.*; + +import java.io.IOException; + +import org.exist.storage.DBBroker; +import org.exist.xmldb.CollectionImpl; +import org.exist.xmldb.DatabaseInstanceManager; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.xmldb.api.DatabaseManager; +import org.xmldb.api.base.Collection; +import org.xmldb.api.base.Database; +import org.xmldb.api.base.XMLDBException; +import org.xmldb.api.modules.CollectionManagementService; + +/** + * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a> + * + */ +public class DebuggerTest { + + static Collection test = null; + + @Test + public void testDebugger() { + assertNotNull("Database wasn't initilised.", database); + + Debugger debugger; + + try { + debugger = new DebuggerImpl(); + + DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/admin/admin.xql"); + + assertNotNull("Debugging source can't be NULL.", test); + + System.out.println(source.getText()); + + } catch (IOException e) { + assertNotNull("IO exception: "+e.getMessage(), null); + } catch (ExceptionTimeout e) { + assertNotNull("Timeout exception: "+e.getMessage(), null); + } + } + + static org.exist.start.Main database; + + @BeforeClass + public static void initDB() { +// // initialize XML:DB driver +// try { +// Class cl = Class.forName("org.exist.xmldb.DatabaseImpl"); +// Database database = (Database) cl.newInstance(); +// database.setProperty("create-database", "true"); +// DatabaseManager.registerDatabase(database); +// +// org.xmldb.api.base.Collection root = DatabaseManager.getCollection("xmldb:exist://" + DBBroker.ROOT_COLLECTION, "admin", null); +// CollectionManagementService mgmt = (CollectionManagementService) root.getService("CollectionManagementService", "1.0"); +// test = mgmt.createCollection("test"); +// +// } catch (Exception e) { +// e.printStackTrace(); +// fail(e.getMessage()); +// } + database = new org.exist.start.Main("jetty"); + database.run(new String[]{"jetty"}); + } + + @AfterClass + public static void closeDB() { +// try { +// Collection root = DatabaseManager.getCollection("xmldb:exist://" + DBBroker.ROOT_COLLECTION, "admin", null); +// CollectionManagementService cmgr = (CollectionManagementService) root.getService("CollectionManagementService", "1.0"); +// cmgr.removeCollection("test"); +// +// DatabaseInstanceManager mgr = (DatabaseInstanceManager) root.getService("DatabaseInstanceManager", "1.0"); +// mgr.shutdown(); +// } catch (XMLDBException e) { +// e.printStackTrace(); +// fail(e.getMessage()); +// } + database.shutdown(); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2009-10-23 15:08:27
|
Revision: 10255 http://exist.svn.sourceforge.net/exist/?rev=10255&view=rev Author: shabanovd Date: 2009-10-23 15:08:17 +0000 (Fri, 23 Oct 2009) Log Message: ----------- [ignore] response is parsing now (may be, redesign to MINA way http://www.ashishpaliwal.com/blog/2008/10/implementing-xml-decoder-for-apache-mina/) source command is working too, test it same how ... Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/RequestDecoder.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/ResponseImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2009-10-23 08:48:39 UTC (rev 10254) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2009-10-23 15:08:17 UTC (rev 10255) @@ -37,6 +37,7 @@ import org.exist.debugger.dbgp.ProtocolHandler; import org.exist.debugger.dbgp.ResponseImpl; import org.exist.debugger.model.Breakpoint; +import org.exist.util.Base64Decoder; /** * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a> @@ -101,7 +102,13 @@ if ("1".equals(response.getAttribute("success"))) { DebuggingSourceImpl source = new DebuggingSourceImpl(this, fileURI); - source.setText(response.getText()); + + Base64Decoder dec = new Base64Decoder(); + dec.translate(response.getText()); + byte[] c = dec.getByteArray(); + String s = new String(c); + + source.setText(s); sources.put(fileURI, source); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/RequestDecoder.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/RequestDecoder.java 2009-10-23 08:48:39 UTC (rev 10254) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/RequestDecoder.java 2009-10-23 15:08:17 UTC (rev 10255) @@ -25,7 +25,6 @@ import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.CumulativeProtocolDecoder; import org.apache.mina.filter.codec.ProtocolDecoderOutput; -import org.exist.debuggee.dbgp.packets.Command; /** * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a> @@ -42,13 +41,16 @@ byte b; while (true) { + //TODO: limit length to avoid "OutOfMemory" if (length == null) { if (in.remaining() > 0) { b = in.get(); if (b == (byte)0) { try { length = Integer.valueOf(sLength); - } finally { + } catch (java.lang.NumberFormatException e) { + length = null; + sLength = ""; } continue; } @@ -57,8 +59,8 @@ return false; } } else if (in.remaining() >= length) { - in.limit(length+sLength.length()+1); - ResponseImpl response = new ResponseImpl(session, in.asInputStream()); + ResponseImpl response = new ResponseImpl(session, + in.getSlice(length).asInputStream()); if (response.isValid()) response.getDebugger().addResponse(response); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/ResponseImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/ResponseImpl.java 2009-10-23 08:48:39 UTC (rev 10254) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/dbgp/ResponseImpl.java 2009-10-23 15:08:17 UTC (rev 10255) @@ -32,7 +32,9 @@ import org.exist.debugger.DebuggerImpl; import org.exist.debugger.Response; import org.exist.memtree.SAXAdapter; -import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.Text; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; @@ -45,7 +47,7 @@ private IoSession session; - private Document parsedResponse = null; + private Element parsedResponse = null; public ResponseImpl(IoSession session, InputStream inputStream) { this.session = session; @@ -60,7 +62,7 @@ SAXAdapter adapter = new SAXAdapter(); reader.setContentHandler(adapter); reader.parse(src); - parsedResponse = adapter.getDocument(); + parsedResponse = (Element) adapter.getDocument().getFirstChild(); } catch (ParserConfigurationException e) { } catch (SAXException e) { } catch (IOException e) { @@ -80,17 +82,21 @@ } public String getTransactionID() { - if (parsedResponse.getFirstChild().getNodeName().equals("init")) + if (parsedResponse.getNodeName().equals("init")) return "init"; return getAttribute("transaction_id"); } public String getAttribute(String attr) { - return parsedResponse.getFirstChild().getAttributes().getNamedItem(attr).getNodeValue(); + return parsedResponse.getAttributes().getNamedItem(attr).getNodeValue(); } public String getText() { + Node node = parsedResponse.getFirstChild(); + if (node.getNodeType() == Node.TEXT_NODE) + return ((Text) node).getData(); + return null; } } Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2009-10-23 08:48:39 UTC (rev 10254) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2009-10-23 15:08:17 UTC (rev 10255) @@ -56,10 +56,8 @@ DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/admin/admin.xql"); - assertNotNull("Debugging source can't be NULL.", test); + assertNotNull("Debugging source can't be NULL.", source); - System.out.println(source.getText()); - } catch (IOException e) { assertNotNull("IO exception: "+e.getMessage(), null); } catch (ExceptionTimeout e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2009-11-23 16:16:26
|
Revision: 10550 http://exist.svn.sourceforge.net/exist/?rev=10550&view=rev Author: shabanovd Date: 2009-11-23 16:16:00 +0000 (Mon, 23 Nov 2009) Log Message: ----------- [feature] Location (stack) expression's column information Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/StackGet.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/LocationImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/StackGet.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/StackGet.java 2009-11-23 16:02:10 UTC (rev 10549) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/StackGet.java 2009-11-23 16:16:00 UTC (rev 10550) @@ -79,10 +79,10 @@ return "<stack level=\""+String.valueOf(level)+"\" " + "lineno=\""+expr.getLine()+"\" " + "type=\"file\" " + - "filename=\""+getFileuri(expr.getSource())+"\" />"; + "filename=\""+getFileuri(expr.getSource())+"\" " + // + // "where=\"\" " + -// "cmdbegin=\""+expr.getLine()+":"+expr.getColumn()+"\" " + + "cmdbegin=\""+expr.getLine()+":"+expr.getColumn()+"\" />"; // "cmdend=\""+(expr.getLine())+":"+(expr.getColumn()+1)+"\"/>"; } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/LocationImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/LocationImpl.java 2009-11-23 16:02:10 UTC (rev 10549) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/LocationImpl.java 2009-11-23 16:16:00 UTC (rev 10550) @@ -54,6 +54,11 @@ } else if (attr.getNodeName().equals("level")) { level = Integer.parseInt(attr.getNodeValue()); + } else if (attr.getNodeName().equals("cmdbegin")) { + String[] begin = attr.getNodeValue().split(":"); + + beginColumn = Integer.parseInt(begin[1]); + } } } Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2009-11-23 16:02:10 UTC (rev 10549) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2009-11-23 16:16:00 UTC (rev 10550) @@ -92,8 +92,12 @@ stack = source.getStackFrames(); assertEquals(3, stack.size()); assertEquals(8, stack.get(0).getLineBegin()); + assertEquals(24, stack.get(1).getLineBegin()); + assertEquals(78, stack.get(1).getColumnBegin()); + assertEquals(24, stack.get(2).getLineBegin()); + assertEquals(42, stack.get(2).getColumnBegin()); System.out.println("sending get-variables first time"); List<Variable> vars = source.getVariables(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-04-25 06:10:45
|
Revision: 11707 http://exist.svn.sourceforge.net/exist/?rev=11707&view=rev Author: shabanovd Date: 2010-04-25 06:10:39 +0000 (Sun, 25 Apr 2010) Log Message: ----------- [bugfix] Debugger: throw IOException if requesting not exist resource or unrunnable Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 04:06:51 UTC (rev 11706) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 06:10:39 UTC (rev 11707) @@ -67,8 +67,15 @@ int currentTransactionId = 1; // private String lastStatus = FIRST_RUN; + + protected int responseCode = 0; - public DebuggerImpl() { + public DebuggerImpl() throws IOException { + acceptor = new NioSocketAcceptor(); + acceptor.getFilterChain().addLast("protocol", + new ProtocolCodecFilter(new CodecFactory())); + acceptor.setHandler(new ProtocolHandler(this)); + acceptor.bind(new InetSocketAddress(eventPort)); } private int getNextTransaction() { @@ -81,15 +88,9 @@ public DebuggingSource init(String url) throws IOException, ExceptionTimeout { - acceptor = new NioSocketAcceptor(); - acceptor.getFilterChain().addLast("protocol", - new ProtocolCodecFilter(new CodecFactory())); - acceptor.setHandler(new ProtocolHandler(this)); - acceptor.bind(new InetSocketAddress(eventPort)); - LOG.info("Debugger is listening at port " + eventPort); - Thread session = new Thread(new HttpSession(url)); + Thread session = new Thread(new HttpSession(this, url)); session.start(); // 30s timeout @@ -203,16 +204,21 @@ return getResponse(transactionID, 0); } catch (ExceptionTimeout e) { return null; + } catch (IOException e) { + return null; //UNDERSTAND: throw error? } } public synchronized Response getResponse(String transactionID, int timeout) - throws ExceptionTimeout { + throws ExceptionTimeout, IOException { long sTime = System.currentTimeMillis(); while (!responses.containsKey(transactionID)) { try { - if (timeout == 0) + if (responseCode != 0) + throw new IOException("Got responce code "+responseCode+" on debugging request"); + + else if (timeout == 0) wait(10); //slow down next check else wait(timeout); @@ -231,7 +237,7 @@ return response; } - // throw error??? + //UNDERSTAND: throw error??? return null; } @@ -371,4 +377,9 @@ return true; } + + public synchronized void setResponseCode(int code) { + responseCode = code; + notifyAll(); + } } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java 2010-04-25 04:06:51 UTC (rev 11706) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java 2010-04-25 06:10:39 UTC (rev 11707) @@ -31,9 +31,11 @@ */ public class HttpSession implements Runnable { + private DebuggerImpl debugger; private String url; - protected HttpSession(String url) { + protected HttpSession(DebuggerImpl debugger, String url) { + this.debugger = debugger; this.url = url; } @@ -41,14 +43,7 @@ * @see java.lang.Runnable#run() */ public void run() { -// HttpState initialState = new HttpState(); -// -// Cookie mycookie = new Cookie(".exist-db.org", "XDEBUG_SESSION", "default", "/", null, false); -// -// initialState.addCookie(mycookie); - HttpClient client = new HttpClient(); -// client.setState(initialState); PostMethod method = new PostMethod(url); @@ -59,7 +54,8 @@ try { System.out.println("sending http request with debugging flag"); - client.executeMethod(method); + + debugger.setResponseCode(client.executeMethod(method)); System.out.println("get http response"); } catch (Exception e) { Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 04:06:51 UTC (rev 11706) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 06:10:39 UTC (rev 11707) @@ -103,20 +103,22 @@ System.out.println("sending get-variables first time"); List<Variable> vars = source.getVariables(); - assertEquals(1, vars.size()); + assertEquals(2, vars.size()); for (Variable var : vars) { - assertEquals("n", var.getName()); - assertEquals("1", var.getValue()); + if (var.getName().equals("n")) + assertEquals("1", var.getValue()); + else if (var.getName().equals("dbgp:session")) + assertEquals("default", var.getValue()); } System.out.println("sending get-local-variables"); vars = source.getVariables(0); - assertEquals(1, vars.size()); + assertEquals(2, vars.size()); System.out.println("sending get-glocal-variables"); vars = source.getVariables(1); - assertEquals(0, vars.size()); + assertEquals(1, vars.size()); System.out.print("sending step-into & waiting stop status"); for (int i = 0; i < 7; i++) { @@ -151,15 +153,14 @@ } } - @Test - public void testBreakpoints() { + //@Test + public void testBreakpoints() throws IOException { assertNotNull("Database wasn't initilised.", database); - Debugger debugger; + Debugger debugger = new DebuggerImpl(); try { System.out.println("creating debugger"); - debugger = new DebuggerImpl(); System.out.println("sending init request"); DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); @@ -186,7 +187,43 @@ assertNotNull("Timeout exception: "+e.getMessage(), null); } } + + @Test + public void testResourceNotExistOrNotRunnable() throws IOException { + assertNotNull("Database wasn't initilised.", database); + + System.out.println("creating debugger"); + Debugger debugger = new DebuggerImpl(); + + Exception exception = null; + + try { + System.out.println("sending init request"); + debugger.init("http://127.0.0.1:8080/exist/logo.jpg"); + assertTrue("This point should not be reached", false); + + } catch (IOException e) { + exception = e; + } catch (ExceptionTimeout e) { + exception = e; + } + assertEquals(exception.getClass().toString(), "class java.io.IOException"); + + try { + System.out.println("sending init request"); + debugger.init("http://127.0.0.1:8080/notExist/fibo.xql"); + + assertTrue("This point should not be reached", false); + + } catch (IOException e) { + exception = e; + } catch (ExceptionTimeout e) { + exception = e; + } + assertEquals(exception.getClass().toString(), "class java.io.IOException"); + } + static org.exist.start.Main database; @BeforeClass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-04-25 07:12:21
|
Revision: 11708 http://exist.svn.sourceforge.net/exist/?rev=11708&view=rev Author: shabanovd Date: 2010-04-25 07:12:14 +0000 (Sun, 25 Apr 2010) Log Message: ----------- [API][Debugger] new API getGlocalVariables, getLocalVariables and getVariables Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/ContextGet.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/ContextGet.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/ContextGet.java 2010-04-25 06:10:39 UTC (rev 11707) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/ContextGet.java 2010-04-25 07:12:14 UTC (rev 11708) @@ -38,12 +38,12 @@ /** * stack depth (optional) */ - private Integer stackDepth = null; + private Integer stackDepth; /** * context id (optional, retrieved by context-names) */ - private String contextID = ""; + private String contextID; private Map<QName, Variable> variables; @@ -51,6 +51,11 @@ super(session, args); } + protected void init() { + stackDepth = null; + contextID = null; + } + protected void setArgument(String arg, String val) { if (arg.equals("d")) { stackDepth = Integer.parseInt(val); @@ -67,7 +72,7 @@ @Override public void exec() { //TODO: different stack depth & context id - if (contextID.equals("")) + if (contextID == null || contextID.equals("")) variables = getJoint().getVariables(); else if (contextID.equals(ContextNames.LOCAL)) @@ -110,9 +115,13 @@ if (stackDepth != null) command += " -d "+String.valueOf(stackDepth); - if (contextID != null && contextID.equals("")) - command += " -c "+String.valueOf(contextID); + if (contextID != null && !contextID.equals("")) + command += " -c "+contextID; return command.getBytes(); } + + public void setContextID(String contextID) { + this.contextID = contextID; + } } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 06:10:39 UTC (rev 11707) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 07:12:14 UTC (rev 11708) @@ -137,10 +137,24 @@ return null; } - public List<Variable> getVariables(int contextID) { + public List<Variable> getVariables() { + return getVariables(null); + } + + public List<Variable> getLocalVariables() { + return getVariables(ContextNames.LOCAL); + } + + public List<Variable> getGlobalVariables() { + return getVariables(ContextNames.GLOBAL); + } + + private List<Variable> getVariables(String contextID) { + ContextGet command = new ContextGet(session, - " -i " + getNextTransaction() + - " -c " + String.valueOf(contextID)); + " -i " + getNextTransaction()); + if (contextID != null) + command.setContextID(contextID); command.toDebuggee(); Response response = getResponse(command.getTransactionId()); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java 2010-04-25 06:10:39 UTC (rev 11707) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java 2010-04-25 07:12:14 UTC (rev 11708) @@ -74,13 +74,17 @@ * @see org.exist.debugger.DebuggingSource#getVariables() */ public List<Variable> getVariables() { - return debugger.getVariables(0); + return debugger.getVariables(); } - public List<Variable> getVariables(int contextID) { - return debugger.getVariables(contextID); + public List<Variable> getLocalVariables() { + return debugger.getLocalVariables(); } + public List<Variable> getGlobalVariables() { + return debugger.getGlobalVariables(); + } + /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#isSuspended() */ Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 06:10:39 UTC (rev 11707) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 07:12:14 UTC (rev 11708) @@ -40,7 +40,7 @@ */ public class DebuggerTest implements ResponseListener { - //@Test + @Test public void testDebugger() { assertNotNull("Database wasn't initilised.", database); @@ -113,12 +113,20 @@ } System.out.println("sending get-local-variables"); - vars = source.getVariables(0); - assertEquals(2, vars.size()); + vars = source.getLocalVariables(); + assertEquals(1, vars.size()); + for (Variable var : vars) { + assertEquals("n", var.getName()); + assertEquals("1", var.getValue()); + } System.out.println("sending get-glocal-variables"); - vars = source.getVariables(1); + vars = source.getGlobalVariables(); assertEquals(1, vars.size()); + for (Variable var : vars) { + assertEquals("dbgp:session", var.getName()); + assertEquals("default", var.getValue()); + } System.out.print("sending step-into & waiting stop status"); for (int i = 0; i < 7; i++) { @@ -130,11 +138,13 @@ System.out.println("sending get-variables second time"); vars = source.getVariables(); - assertEquals(1, vars.size()); + assertEquals(2, vars.size()); for (Variable var : vars) { - assertEquals("n", var.getName()); - assertEquals("2", var.getValue()); + if (var.getName().equals("n")) + assertEquals("2", var.getValue()); + else if (var.getName().equals("dbgp:session")) + assertEquals("default", var.getValue()); } System.out.println("sending step-over"); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-04-25 07:53:32
|
Revision: 11709 http://exist.svn.sourceforge.net/exist/?rev=11709&view=rev Author: shabanovd Date: 2010-04-25 07:53:25 +0000 (Sun, 25 Apr 2010) Log Message: ----------- [API][Debugger] implement one instance pattern for Debugger Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/client/DebugClient.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 07:12:14 UTC (rev 11708) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 07:53:25 UTC (rev 11709) @@ -55,6 +55,15 @@ protected final static Logger LOG = Logger.getLogger(DebuggerImpl.class); + private static Debugger instance = null; + + public static Debugger getDebugger() throws IOException { + if (instance == null) + instance = new DebuggerImpl(); + + return instance; + } + private NioSocketAcceptor acceptor; private int eventPort = 9000; @@ -69,8 +78,8 @@ // private String lastStatus = FIRST_RUN; protected int responseCode = 0; - - public DebuggerImpl() throws IOException { + + private DebuggerImpl() throws IOException { acceptor = new NioSocketAcceptor(); acceptor.getFilterChain().addLast("protocol", new ProtocolCodecFilter(new CodecFactory())); @@ -262,9 +271,11 @@ while (true) { response = getResponse(transactionId); - if (response != null && response.getAttribute("status").equals(status)) { - break; - } + if (response != null) + if (response.getAttribute("status").equals(status)) + break; + else if (response.getAttribute("status").equals(STOPPED)) + break; try { Thread.sleep(500); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/client/DebugClient.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/client/DebugClient.java 2010-04-25 07:12:14 UTC (rev 11708) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/client/DebugClient.java 2010-04-25 07:53:25 UTC (rev 11709) @@ -48,7 +48,7 @@ public DebugClient() throws IOException { Terminal.setupTerminal(); console = new ConsoleReader(); - debugger = new DebuggerImpl(); + debugger = DebuggerImpl.getDebugger(); } public void readlineInputLoop() { Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 07:12:14 UTC (rev 11708) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 07:53:25 UTC (rev 11709) @@ -47,8 +47,7 @@ Debugger debugger; try { - System.out.println("creating debugger"); - debugger = new DebuggerImpl(); + debugger = DebuggerImpl.getDebugger(); System.out.println("sending init request"); DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); @@ -163,15 +162,13 @@ } } - //@Test + @Test public void testBreakpoints() throws IOException { assertNotNull("Database wasn't initilised.", database); - Debugger debugger = new DebuggerImpl(); + Debugger debugger = DebuggerImpl.getDebugger(); try { - System.out.println("creating debugger"); - System.out.println("sending init request"); DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); @@ -181,7 +178,9 @@ breakpoint.setLineno(24); breakpoint.sync(); + System.out.println("before run1"); source.run(); + System.out.println("after run1"); List<Location> stack = source.getStackFrames(); assertEquals(1, stack.size()); @@ -189,7 +188,9 @@ breakpoint.remove(); + System.out.println("before run2"); source.run(); + System.out.println("after run2"); } catch (IOException e) { assertNotNull("IO exception: "+e.getMessage(), null); @@ -202,8 +203,7 @@ public void testResourceNotExistOrNotRunnable() throws IOException { assertNotNull("Database wasn't initilised.", database); - System.out.println("creating debugger"); - Debugger debugger = new DebuggerImpl(); + Debugger debugger = DebuggerImpl.getDebugger(); Exception exception = null; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-04-25 12:45:24
|
Revision: 11711 http://exist.svn.sourceforge.net/exist/?rev=11711&view=rev Author: shabanovd Date: 2010-04-25 12:45:18 +0000 (Sun, 25 Apr 2010) Log Message: ----------- [feature][Debugger] implement debugging time evaluation WARNING: calling debugging script's function will freeze eXist, because of limitation in xquery engine implementation, context don't have deep copy method. Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Command.java trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/FeatureGet.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/BreakpointImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Added Paths: ----------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Eval.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -33,12 +33,15 @@ import org.exist.debuggee.dbgp.packets.Init; import org.exist.debugger.model.Breakpoint; import org.exist.dom.QName; +import org.exist.storage.BrokerPool; import org.exist.xquery.CompiledXQuery; import org.exist.xquery.Expression; import org.exist.xquery.TerminatedException; import org.exist.xquery.Variable; import org.exist.xquery.XPathException; +import org.exist.xquery.XQuery; import org.exist.xquery.XQueryContext; +import org.exist.xquery.value.Sequence; /** * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a> @@ -416,4 +419,19 @@ public CommandContinuation getCurrentCommand() { return command; } + + @Override + public String evalution(String script) throws Exception { + + XQueryContext context = compiledXQuery.getContext().copyContext(); + context.setDebuggeeJoint(null); + context.undeclareGlobalVariable(Debuggee.SESSION); + + XQuery service = BrokerPool.getInstance().get(null).getXQueryService(); + CompiledXQuery compiled = service.compile(context, script); + + Sequence resultSequence = service.execute(compiled, null); + + return resultSequence.getStringValue(); + } } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Command.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Command.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Command.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -60,7 +60,7 @@ } protected void init() { - //used by BreakpointSet + //used to init original class vars } public String getTransactionId() { @@ -126,6 +126,9 @@ } else if (command.equals("step_out")) { return new StepOut(session, args); + } else if (command.equals("stop")) { + return new Stop(session, args); + } else if (command.equals("stack_get")) { return new StackGet(session, args); @@ -171,6 +174,9 @@ } else if (command.equals("feature_get")) { return new FeatureGet(session, args); + } else if (command.equals("eval")) { + return new Eval(session, args); + } return new Error(command, session, args); Added: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Eval.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Eval.java (rev 0) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Eval.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -0,0 +1,116 @@ +/* + * eXist Open Source Native XML Database + * Copyright (C) 2010 The eXist Project + * http://exist-db.org + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * $Id$ + */ +package org.exist.debuggee.dbgp.packets; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; + +import org.apache.mina.core.session.IoSession; +import org.exist.debuggee.dbgp.Errors; +import org.exist.util.Base64Encoder; + +/** + * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a> + * + */ +public class Eval extends Command { + + String script; + String result; + + Exception exception; + + public Eval(IoSession session, String args) { + super(session, args); + } + + protected void init() { + script = null; + result = null; + + exception = null; + } + + protected void setArgument(String arg, String val) { + if (arg.equals("-")) { + script = val; + } else { + super.setArgument(arg, val); + } + } + + public byte[] responseBytes() { + byte[] response; + if (exception != null) { + response = errorBytes("eval", Errors.ERR_206, exception.getMessage()); + } else { + String head = "<response " + + "command=\"eval\" " + + "success=\""+isSuccess()+"\" "+ + "transaction_id=\""+transactionID+"\">" + + "<property>"; + String tail = "</property>" + + "</response>"; + + Base64Encoder enc = new Base64Encoder(); + enc.translate(result.getBytes()); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + baos.write(head.getBytes()); + baos.write(new String(enc.getCharArray()).getBytes()); + baos.write(tail.getBytes()); + } catch (IOException e) { + } + response = baos.toByteArray(); + } + + return response; + } + + private String isSuccess() { + if (result != null) + return "1"; + + return "0"; + } + + @Override + public void exec() { + try { + result = getJoint().evalution(script); + } catch (Exception e) { + exception = e; + } + } + + public byte[] commandBytes() { + String command = "eval -i "+transactionID+" -- "+script; + + return command.getBytes(); + } + + public void setScript(String script) { + this.script = script; + } + +} Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/FeatureGet.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/FeatureGet.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/FeatureGet.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -30,7 +30,7 @@ public class FeatureGet extends Command { String name; - String value = null; + String value; boolean success = false; @@ -38,6 +38,11 @@ super(session, args); } + protected void init() { + name = null; + value = null; + } + protected void setArgument(String arg, String val) { if (arg.equals("n")) { name = val; Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -45,7 +45,9 @@ import org.exist.debugger.model.Variable; import org.exist.debugger.model.VariableImpl; import org.exist.util.Base64Decoder; +import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import org.w3c.dom.Text; /** * @author <a href="mailto:sha...@gm...">Dmitriy Shabanov</a> @@ -55,7 +57,7 @@ protected final static Logger LOG = Logger.getLogger(DebuggerImpl.class); - private static Debugger instance = null; + private static DebuggerImpl instance = null; public static Debugger getDebugger() throws IOException { if (instance == null) @@ -64,6 +66,13 @@ return instance; } + public static void shutdownDebugger() { + if (instance == null) + return; + + instance.acceptor.unbind(); + } + private NioSocketAcceptor acceptor; private int eventPort = 9000; @@ -81,6 +90,7 @@ private DebuggerImpl() throws IOException { acceptor = new NioSocketAcceptor(); + acceptor.setCloseOnDeactivation(true); acceptor.getFilterChain().addLast("protocol", new ProtocolCodecFilter(new CodecFactory())); acceptor.setHandler(new ProtocolHandler(this)); @@ -115,7 +125,7 @@ * * @see org.exist.debugger.Debugger#source(java.lang.String) */ - public DebuggingSource getSource(String fileURI) { + public DebuggingSource getSource(String fileURI) throws IOException { if (fileURI == null) return null; @@ -146,19 +156,19 @@ return null; } - public List<Variable> getVariables() { + public List<Variable> getVariables() throws IOException { return getVariables(null); } - public List<Variable> getLocalVariables() { + public List<Variable> getLocalVariables() throws IOException { return getVariables(ContextNames.LOCAL); } - public List<Variable> getGlobalVariables() { + public List<Variable> getGlobalVariables() throws IOException { return getVariables(ContextNames.GLOBAL); } - private List<Variable> getVariables(String contextID) { + private List<Variable> getVariables(String contextID) throws IOException { ContextGet command = new ContextGet(session, " -i " + getNextTransaction()); @@ -181,7 +191,7 @@ } - public List<Location> getStackFrames() { + public List<Location> getStackFrames() throws IOException { StackGet command = new StackGet(session, " -i " + getNextTransaction()); command.toDebuggee(); @@ -222,13 +232,11 @@ notifyAll(); } - public Response getResponse(String transactionID) { + public Response getResponse(String transactionID) throws IOException { try { return getResponse(transactionID, 0); } catch (ExceptionTimeout e) { return null; - } catch (IOException e) { - return null; //UNDERSTAND: throw error? } } @@ -238,8 +246,11 @@ while (!responses.containsKey(transactionID)) { try { - if (responseCode != 0) + if (responseCode != 0) { + if (responses.containsKey(transactionID)) + break; throw new IOException("Got responce code "+responseCode+" on debugging request"); + } else if (timeout == 0) wait(10); //slow down next check @@ -266,16 +277,23 @@ private AbstractCommandContinuation currentCommand = null; - private void waitFor(String transactionId, String status) { + private void waitFor(String transactionId, String status) throws IOException { Response response = null; while (true) { response = getResponse(transactionId); - if (response != null) - if (response.getAttribute("status").equals(status)) + if (response != null) { + if (response.getElemetsByName("error").getLength() != 0) break; - else if (response.getAttribute("status").equals(STOPPED)) + + String getStatus = response.getAttribute("status"); + + if (getStatus.equals(status)) { break; + } else if (getStatus.equals(STOPPED)) { + break; + } + } try { Thread.sleep(500); @@ -291,7 +309,7 @@ command.toDebuggee(); } - public void run() { + public void run() throws IOException { Run command = new Run(session, " -i " + getNextTransaction()); command.toDebuggee(); @@ -306,7 +324,7 @@ command.toDebuggee(); } - public void stepInto() { + public void stepInto() throws IOException { StepInto command = new StepInto(session, " -i " + getNextTransaction()); command.toDebuggee(); @@ -321,7 +339,7 @@ command.toDebuggee(); } - public void stepOut() { + public void stepOut() throws IOException { StepOut command = new StepOut(session, " -i " + getNextTransaction()); command.toDebuggee(); @@ -336,7 +354,7 @@ command.toDebuggee(); } - public void stepOver() { + public void stepOver() throws IOException { StepOver command = new StepOver(session, " -i " + getNextTransaction()); command.toDebuggee(); @@ -351,7 +369,7 @@ command.toDebuggee(); } - public void stop() { + public void stop() throws IOException { Stop command = new Stop(session, " -i " + getNextTransaction()); command.toDebuggee(); @@ -359,7 +377,7 @@ waitFor(command.getTransactionId(), BREAK); } - public boolean setBreakpoint(Breakpoint breakpoint) { + public boolean setBreakpoint(Breakpoint breakpoint) throws IOException { BreakpointSet command = new BreakpointSet(session, " -i " + getNextTransaction()); command.setBreakpoint((BreakpointImpl) breakpoint); @@ -375,7 +393,7 @@ return true; } - public boolean updateBreakpoint(Breakpoint breakpoint) { + public boolean updateBreakpoint(Breakpoint breakpoint) throws IOException { BreakpointUpdate command = new BreakpointUpdate(session, " -i " + getNextTransaction()); command.setBreakpoint(breakpoint); @@ -389,7 +407,7 @@ return true; } - public boolean removeBreakpoint(BreakpointImpl breakpoint) { + public boolean removeBreakpoint(BreakpointImpl breakpoint) throws IOException { BreakpointRemove command = new BreakpointRemove(session, " -i " + getNextTransaction()); command.setBreakpoint(breakpoint); @@ -403,8 +421,37 @@ return true; } - public synchronized void setResponseCode(int code) { + protected synchronized void terminate(String url, int code) { responseCode = code; notifyAll(); + + System.out.println("setResponseCode responseCode = "+responseCode); } + + private String getText(NodeList nodes) { + if ((nodes.getLength() == 1) && (nodes.item(0).getNodeType() == Node.TEXT_NODE)) + return ((Text)nodes.item(0)).getData(); + + return ""; + } + + @Override + public String evaluate(String script) throws IOException { + Eval command = new Eval(session, " -i " + getNextTransaction()); + command.setScript(script); + command.toDebuggee(); + + Response response = getResponse(command.getTransactionId()); + + if ("1".equals(response.getAttribute("success"))) { + Node property = response.getElemetsByName("property").item(0); + Base64Decoder dec = new Base64Decoder(); + dec.translate(getText(property.getChildNodes())); + byte[] c = dec.getByteArray(); + + return new String(c); + } + + return null; + } } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggingSourceImpl.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -21,6 +21,7 @@ */ package org.exist.debugger; +import java.io.IOException; import java.util.List; import org.exist.debugger.model.*; @@ -66,22 +67,22 @@ /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#getStackFrames() */ - public List<Location> getStackFrames() { + public List<Location> getStackFrames() throws IOException { return debugger.getStackFrames(); } /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#getVariables() */ - public List<Variable> getVariables() { + public List<Variable> getVariables() throws IOException { return debugger.getVariables(); } - public List<Variable> getLocalVariables() { + public List<Variable> getLocalVariables() throws IOException { return debugger.getLocalVariables(); } - public List<Variable> getGlobalVariables() { + public List<Variable> getGlobalVariables() throws IOException { return debugger.getGlobalVariables(); } @@ -127,7 +128,7 @@ /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#run() */ - public void run() { + public void run() throws IOException { debugger.run(); } @@ -141,7 +142,7 @@ /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#stepInto() */ - public void stepInto() { + public void stepInto() throws IOException { debugger.stepInto(); } @@ -155,7 +156,7 @@ /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#stepOut() */ - public void stepOut() { + public void stepOut() throws IOException { debugger.stepOut(); } @@ -169,7 +170,7 @@ /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#stepOver() */ - public void stepOver() { + public void stepOver() throws IOException { debugger.stepOver(); } @@ -183,7 +184,7 @@ /* (non-Javadoc) * @see org.exist.debugger.DebuggingSource#stop() */ - public void stop() { + public void stop() throws IOException { debugger.stop(); } @@ -197,4 +198,9 @@ code = text; } + @Override + public String evaluate(String script) throws IOException { + return debugger.evaluate(script); + } + } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/HttpSession.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -55,7 +55,7 @@ try { System.out.println("sending http request with debugging flag"); - debugger.setResponseCode(client.executeMethod(method)); + debugger.terminate(url, client.executeMethod(method)); System.out.println("get http response"); } catch (Exception e) { Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/BreakpointImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/BreakpointImpl.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/model/BreakpointImpl.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -21,6 +21,8 @@ */ package org.exist.debugger.model; +import java.io.IOException; + import org.exist.debugger.DebuggerImpl; import org.exist.debugger.DebuggingSource; @@ -207,7 +209,7 @@ return (DebuggerImpl)debuggingSource.getDebugger(); } - public boolean sync() { + public boolean sync() throws IOException { if (getId() == -1) { return getDebugger().setBreakpoint(this); } else if (getId() > 0) { @@ -217,7 +219,7 @@ return false; } - public boolean remove() { + public boolean remove() throws IOException { return getDebugger().removeBreakpoint(this); } } Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 11:59:40 UTC (rev 11710) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-04-25 12:45:18 UTC (rev 11711) @@ -40,7 +40,7 @@ */ public class DebuggerTest implements ResponseListener { - @Test + //@Test public void testDebugger() { assertNotNull("Database wasn't initilised.", database); @@ -162,7 +162,7 @@ } } - @Test + //@Test public void testBreakpoints() throws IOException { assertNotNull("Database wasn't initilised.", database); @@ -178,9 +178,7 @@ breakpoint.setLineno(24); breakpoint.sync(); - System.out.println("before run1"); source.run(); - System.out.println("after run1"); List<Location> stack = source.getStackFrames(); assertEquals(1, stack.size()); @@ -188,9 +186,7 @@ breakpoint.remove(); - System.out.println("before run2"); source.run(); - System.out.println("after run2"); } catch (IOException e) { assertNotNull("IO exception: "+e.getMessage(), null); @@ -198,8 +194,51 @@ assertNotNull("Timeout exception: "+e.getMessage(), null); } } + + @Test + public void testEvaluation() throws IOException { + assertNotNull("Database wasn't initilised.", database); + + Debugger debugger = DebuggerImpl.getDebugger(); + + try { + System.out.println("sending init request"); + DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); + + assertNotNull("Debugging source can't be NULL.", source); + + Breakpoint breakpoint = source.newBreakpoint(); + breakpoint.setLineno(24); + breakpoint.sync(); + + String res = source.evaluate("$dbgp:session"); + assertNull(res); + + res = source.evaluate("let $seq := (98.5, 98.3, 98.9) return count($seq)"); + assertEquals("3", res); + + //xquery engine have problem here, because context not copied correctly +// res = source.evaluate("f:fibo(2)"); +// System.out.println(res); + + source.run(); + + List<Location> stack = source.getStackFrames(); + assertEquals(1, stack.size()); + assertEquals(24, stack.get(0).getLineBegin()); + + breakpoint.remove(); + + source.stop(); + + } catch (IOException e) { + assertNotNull("IO exception: "+e.getMessage(), null); + } catch (ExceptionTimeout e) { + assertNotNull("Timeout exception: "+e.getMessage(), null); + } + } - @Test + //@Test public void testResourceNotExistOrNotRunnable() throws IOException { assertNotNull("Database wasn't initilised.", database); @@ -244,6 +283,8 @@ @AfterClass public static void closeDB() { + DebuggerImpl.shutdownDebugger(); + database.shutdown(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-06-18 05:04:14
|
Revision: 11855 http://exist.svn.sourceforge.net/exist/?rev=11855&view=rev Author: shabanovd Date: 2010-06-18 05:04:07 +0000 (Fri, 18 Jun 2010) Log Message: ----------- [bugfix] resolve http://sourceforge.net/tracker/?func=detail&aid=3011055&group_id=17691&atid=117691 Details: If I use the following code: Debugger debugger = DebuggerImpl.getDebugger(); try { debugger.init("http://10.0.0.56:8080/exist/xquery/fibo.xql"); } catch (IOException e) { // This is correct, the URL points indeed to an unavailable file. } // Now I try with the a correct file location. debugger.init("http://127.0.0.1:8080/exist/rest/db/xquery/json-test.xql"); Unfortunately, I also get an IOException: (Got responce code 404 on debugging request) that is not correct, the file is available. Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-06-17 09:03:59 UTC (rev 11854) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-06-18 05:04:07 UTC (rev 11855) @@ -109,6 +109,10 @@ ExceptionTimeout { LOG.info("Debugger is listening at port " + eventPort); + if (this.session != null) new IOException("Another debugging session is active."); + + responseCode = 0; + Thread session = new Thread(new HttpSession(this, url)); session.start(); @@ -210,7 +214,10 @@ } public void sessionClosed() { - // TODO Auto-generated method stub + if (!session.isClosing()) + session.close(true); + + session = null; } // weak map??? Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-06-17 09:03:59 UTC (rev 11854) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-06-18 05:04:07 UTC (rev 11855) @@ -40,6 +40,25 @@ */ public class DebuggerTest implements ResponseListener { + @Test + public void testConntection() throws IOException { + assertNotNull("Database wasn't initilised.", database); + + Debugger debugger = DebuggerImpl.getDebugger(); + + try { + debugger.init("http://127.0.0.1:8080/xquery/fibo.xql"); + } catch (Exception e) { + } + + try { + DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); + assertNotNull("Debugging source can't be NULL.", source); + } catch (Exception e) { + assertNotNull("exception: "+e.getMessage(), null); + } + } + //@Test public void testDebugger() { assertNotNull("Database wasn't initilised.", database); @@ -195,7 +214,7 @@ } } - @Test + //@Test public void testEvaluation() throws IOException { assertNotNull("Database wasn't initilised.", database); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-07-18 16:43:13
|
Revision: 11996 http://exist.svn.sourceforge.net/exist/?rev=11996&view=rev Author: shabanovd Date: 2010-07-18 16:43:07 +0000 (Sun, 18 Jul 2010) Log Message: ----------- [bugfix] bug ID: 3011041 (Breakpoint behaviour in debugging mode) https://sourceforge.net/tracker/?func=detail&aid=3011041&group_id=17691&atid=117691 Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java 2010-07-18 16:08:05 UTC (rev 11995) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java 2010-07-18 16:43:07 UTC (rev 11996) @@ -23,6 +23,7 @@ import java.io.StringWriter; import java.util.*; +import java.util.concurrent.CopyOnWriteArraySet; import org.apache.log4j.Logger; import org.exist.debuggee.dbgp.packets.AbstractCommandContinuation; @@ -65,6 +66,8 @@ private Map<String, Map<Integer, Breakpoint>> filesBreakpoints = new HashMap<String, Map<Integer, Breakpoint>>(); + private Set<Breakpoint> activeBreakpoints = new CopyOnWriteArraySet<Breakpoint>(); + //id, breakpoint private Map<Integer, Breakpoint> breakpoints = new HashMap<Integer, Breakpoint>(); @@ -125,6 +128,16 @@ String fileName = Command.getFileuri(expr.getSource()); Integer lineNo = expr.getLine(); + //check breakpoint + for (Breakpoint breakpoint : activeBreakpoints) { + if (breakpoint.getFilename().equals(fileName) + && breakpoint.getType().equals(Breakpoint.TYPE_LINE) ) { + if (breakpoint.getLineno() != lineNo) { + activeBreakpoints.remove(breakpoint); + } + } + } + Map<Integer, Breakpoint> fileBreakpoints = null; while (true) { @@ -176,7 +189,11 @@ if (fileBreakpoints.containsKey(lineNo)) { Breakpoint breakpoint = fileBreakpoints.get(lineNo); - if (breakpoint.getState() && breakpoint.getType().equals(Breakpoint.TYPE_LINE)) { + if (!activeBreakpoints.contains(breakpoint) + && breakpoint.getState() + && breakpoint.getType().equals(Breakpoint.TYPE_LINE)) { + + activeBreakpoints.add(breakpoint); command.setStatus(BREAK); //waitCommand(); //break; @@ -398,6 +415,8 @@ } breakpoints.remove(breakpointID); + + activeBreakpoints.remove(breakpoint); } return breakpoint; Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-07-18 16:08:05 UTC (rev 11995) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-07-18 16:43:07 UTC (rev 11996) @@ -41,12 +41,24 @@ public class DebuggerTest implements ResponseListener { @Test - public void testConntection() throws IOException { + public void testConnection() throws IOException { assertNotNull("Database wasn't initilised.", database); Debugger debugger = DebuggerImpl.getDebugger(); + Exception exception = null; + + //if resource don't exist throw exception try { + debugger.init("http://127.0.0.1:8080/xquery/fibo.xql"); + assertNotNull("The resource don't exist, but debugger din't throw exception.", null); + } catch (Exception e) { + exception = e; + } + + assertEquals(exception.getClass().toString(), "class java.io.IOException"); + + try { DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); assertNotNull("Debugging source can't be NULL.", source); source.stop(); @@ -177,7 +189,7 @@ } } -// @Test + @Test public void testBreakpoints() throws IOException { assertNotNull("Database wasn't initilised.", database); @@ -211,6 +223,43 @@ } @Test + public void testLineBreakpoint() throws IOException { + assertNotNull("Database wasn't initilised.", database); + + Debugger debugger = DebuggerImpl.getDebugger(); + + try { + System.out.println("sending init request"); + DebuggingSource source = debugger.init("http://127.0.0.1:8080/exist/xquery/fibo.xql"); + + assertNotNull("Debugging source can't be NULL.", source); + + Breakpoint breakpoint = source.newBreakpoint(); + breakpoint.setLineno(24); + breakpoint.sync(); + + source.run(); + + List<Location> stack = source.getStackFrames(); + assertEquals(1, stack.size()); + assertEquals(24, stack.get(0).getLineBegin()); + + source.stepInto(); + + stack = source.getStackFrames(); + assertEquals(3, stack.size()); + assertEquals(8, stack.get(0).getLineBegin()); + + source.stop(); + + } catch (IOException e) { + assertNotNull("IO exception: "+e.getMessage(), null); + } catch (ExceptionTimeout e) { + assertNotNull("Timeout exception: "+e.getMessage(), null); + } + } + + @Test public void testEvaluation() throws IOException { assertNotNull("Database wasn't initilised.", database); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-08-18 16:29:35
|
Revision: 12446 http://exist.svn.sourceforge.net/exist/?rev=12446&view=rev Author: shabanovd Date: 2010-08-18 16:29:28 +0000 (Wed, 18 Aug 2010) Log Message: ----------- [ignore] debuggee close session too soon, so last response on stop command do not reach debugger. Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-08-18 13:34:25 UTC (rev 12445) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-08-18 16:29:28 UTC (rev 12446) @@ -377,7 +377,11 @@ command.toDebuggee(); - waitFor(command.getTransactionId(), BREAK); + try { + waitFor(command.getTransactionId(), BREAK); + } catch (IOException e) { + //closed? + } } public boolean setBreakpoint(Breakpoint breakpoint) throws IOException { Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-08-18 13:34:25 UTC (rev 12445) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-08-18 16:29:28 UTC (rev 12446) @@ -81,11 +81,6 @@ assertNotNull("Debugging source can't be NULL.", source); - try { //why??? - Thread.sleep(1000); - } catch (InterruptedException e) { - } - System.out.println("get stack frames"); List<Location> stack = source.getStackFrames(); assertEquals(1, stack.size()); @@ -373,7 +368,29 @@ } assertEquals(exception.getClass().toString(), "class java.io.IOException"); } + + @Test + public void testStepInto() throws Exception { + Debugger debugger = DebuggerImpl.getDebugger(); + String url = "http://127.0.0.1:8080/exist/xquery/json-test.xql"; + for (int i = 0; i < 10; i++) { + System.out.println("init "+i); + DebuggingSource debuggerSource = debugger.init(url); + debuggerSource.stepInto(); + //Thread.sleep(1000); + List<Location> stack = debuggerSource.getStackFrames(); + assertEquals(1, stack.size()); + assertEquals(8, stack.get(0).getLineBegin()); + assertEquals(6, stack.get(0).getColumnBegin()); + + debuggerSource.stop(); + //Thread.sleep(1000); + + System.out.println("stoped"); + } + } + static org.exist.start.Main database; @BeforeClass This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2010-08-20 09:07:56
|
Revision: 12465 http://exist.svn.sourceforge.net/exist/?rev=12465&view=rev Author: shabanovd Date: 2010-08-20 09:07:49 +0000 (Fri, 20 Aug 2010) Log Message: ----------- [ignore] review failing test, resolve by changing the test Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeConnectionTCP.java trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/CodecFactory.java trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ProtocolHandler.java trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ResponseEncoder.java trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeConnectionTCP.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeConnectionTCP.java 2010-08-20 08:48:38 UTC (rev 12464) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeConnectionTCP.java 2010-08-20 09:07:49 UTC (rev 12465) @@ -49,8 +49,7 @@ // Set connect timeout for 30 seconds. connector.setConnectTimeoutMillis(30*1000L); - connector.getFilterChain().addLast( - "protocol", new ProtocolCodecFilter(new CodecFactory())); + connector.getFilterChain().addLast( "protocol", new ProtocolCodecFilter(new CodecFactory()) ); // Start communication. connector.setHandler(new ProtocolHandler()); @@ -63,7 +62,7 @@ future.awaitUninterruptibly(); return future.getSession(); } catch (RuntimeIoException e) { - System.err.println("Failed to connect."); + e.printStackTrace(); return null; } } Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/CodecFactory.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/CodecFactory.java 2010-08-20 08:48:38 UTC (rev 12464) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/CodecFactory.java 2010-08-20 09:07:49 UTC (rev 12465) @@ -42,7 +42,7 @@ } public ProtocolDecoder getDecoder(IoSession ioSession) throws Exception { - synchronized (decoders) {//TODO: rewrite??? + synchronized (decoders) { if (decoders.containsKey(ioSession)) return decoders.get(ioSession); @@ -54,7 +54,7 @@ } public ProtocolEncoder getEncoder(IoSession ioSession) throws Exception { - synchronized (encoders) {//TODO: rewrite??? + synchronized (encoders) { if (encoders.containsKey(ioSession)) return encoders.get(ioSession); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ProtocolHandler.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ProtocolHandler.java 2010-08-20 08:48:38 UTC (rev 12464) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ProtocolHandler.java 2010-08-20 09:07:49 UTC (rev 12465) @@ -53,7 +53,7 @@ joint.sessionClosed(false); if (LOG.isDebugEnabled()) - LOG.debug("Total " + session.getReadBytes() + " byte(s) readed."); + LOG.debug("Total " + session.getReadBytes() + " byte(s) readed, " + session.getWrittenBytes() + " byte(s) writed."); } @Override Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ResponseEncoder.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ResponseEncoder.java 2010-08-20 08:48:38 UTC (rev 12464) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/ResponseEncoder.java 2010-08-20 09:07:49 UTC (rev 12465) @@ -36,8 +36,7 @@ private final static Logger LOG = Logger.getLogger(ResponseEncoder.class); - public void encode(IoSession session, Object message, ProtocolEncoderOutput out) - throws Exception { + public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception { Packet packet = (Packet) message; byte[] response = packet.responseBytes(); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-08-20 08:48:38 UTC (rev 12464) +++ trunk/eXist/extensions/debuggee/src/org/exist/debugger/DebuggerImpl.java 2010-08-20 09:07:49 UTC (rev 12465) @@ -71,6 +71,7 @@ return; instance.acceptor.unbind(); + instance = null; } private NioSocketAcceptor acceptor; @@ -91,8 +92,7 @@ private DebuggerImpl() throws IOException { acceptor = new NioSocketAcceptor(); acceptor.setCloseOnDeactivation(true); - acceptor.getFilterChain().addLast("protocol", - new ProtocolCodecFilter(new CodecFactory())); + acceptor.getFilterChain().addLast("protocol", new ProtocolCodecFilter(new CodecFactory())); acceptor.setHandler(new ProtocolHandler(this)); acceptor.bind(new InetSocketAddress(eventPort)); } @@ -101,7 +101,7 @@ return currentTransactionId++; } - protected void setSession(IoSession session) { + private void setSession(IoSession session) { this.session = session; } @@ -112,13 +112,16 @@ if (this.session != null) new IOException("Another debugging session is active."); responseCode = 0; + responses = new HashMap<String, Response>(); + sources = new HashMap<String, DebuggingSource>(); + currentTransactionId = 1; Thread session = new Thread(new HttpSession(this, url)); session.start(); // 30s timeout ResponseImpl response = (ResponseImpl) getResponse("init", 30 * 1000); - this.session = response.getSession(); + setSession(response.getSession()); // TODO: fileuri as constant??? return getSource(response.getAttribute("fileuri")); Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-08-20 08:48:38 UTC (rev 12464) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2010-08-20 09:07:49 UTC (rev 12465) @@ -371,23 +371,30 @@ @Test public void testStepInto() throws Exception { - Debugger debugger = DebuggerImpl.getDebugger(); String url = "http://127.0.0.1:8080/exist/xquery/json-test.xql"; for (int i = 0; i < 10; i++) { + Debugger debugger = DebuggerImpl.getDebugger(); + System.out.println("init "+i); DebuggingSource debuggerSource = debugger.init(url); + + System.out.println("send stepInto"); debuggerSource.stepInto(); //Thread.sleep(1000); + System.out.println("send getStackFrames"); List<Location> stack = debuggerSource.getStackFrames(); assertEquals(1, stack.size()); assertEquals(8, stack.get(0).getLineBegin()); assertEquals(6, stack.get(0).getColumnBegin()); + System.out.println("send stop"); debuggerSource.stop(); //Thread.sleep(1000); System.out.println("stoped"); + + DebuggerImpl.shutdownDebugger(); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sha...@us...> - 2011-04-24 10:12:41
|
Revision: 14285 http://exist.svn.sourceforge.net/exist/?rev=14285&view=rev Author: shabanovd Date: 2011-04-24 10:12:35 +0000 (Sun, 24 Apr 2011) Log Message: ----------- [debugger] in-database script debug raise NPE Modified Paths: -------------- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Source.java trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java 2011-04-24 03:40:33 UTC (rev 14284) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/DebuggeeJointImpl.java 2011-04-24 10:12:35 UTC (rev 14285) @@ -32,7 +32,6 @@ import org.exist.debuggee.dbgp.packets.Init; import org.exist.debugger.model.Breakpoint; import org.exist.dom.QName; -import org.exist.storage.BrokerPool; import org.exist.storage.DBBroker; import org.exist.storage.serializers.Serializer; import org.exist.util.serializer.SAXSerializer; @@ -463,20 +462,20 @@ Database db = compiledXQuery.getContext().getDatabase(); DBBroker broker = null; try { - broker = db.get(null); //TODO: account required + broker = db.getBroker(); //TODO: account required XQueryContext context = compiledXQuery.getContext().copyContext(); context.setDebuggeeJoint(null); context.undeclareGlobalVariable(Debuggee.SESSION); context.undeclareGlobalVariable(Debuggee.IDEKEY); - XQuery service = context.getBroker().getXQueryService(); + XQuery service = broker.getXQueryService(); CompiledXQuery compiled = service.compile(context, script); Sequence resultSequence = service.execute(compiled, null); SAXSerializer sax = null; - Serializer serializer = context.getBroker().getSerializer(); + Serializer serializer = broker.getSerializer(); serializer.reset(); try { sax = (SAXSerializer) SerializerPool.getInstance().borrowObject(SAXSerializer.class); Modified: trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Source.java =================================================================== --- trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Source.java 2011-04-24 03:40:33 UTC (rev 14284) +++ trunk/eXist/extensions/debuggee/src/org/exist/debuggee/dbgp/packets/Source.java 2011-04-24 10:12:35 UTC (rev 14285) @@ -23,6 +23,7 @@ import org.apache.mina.core.session.IoSession; import org.exist.Database; +import org.exist.EXistException; import org.exist.debuggee.dbgp.Errors; import org.exist.dom.BinaryDocument; import org.exist.dom.DocumentImpl; @@ -108,7 +109,7 @@ Database db = getJoint().getContext().getDatabase(); DBBroker broker = null; try { - broker = getJoint().getContext().getBroker(); + broker = db.getBroker(); DocumentImpl resource = broker.getXMLResource(pathUri, Lock.READ_LOCK); if (resource.getResourceType() == DocumentImpl.BINARY_FILE) { @@ -117,7 +118,9 @@ //TODO: xml source??? return; } - } finally { + } catch (EXistException e) { + exception = e; + } finally { db.release(broker); } } Modified: trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java =================================================================== --- trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2011-04-24 03:40:33 UTC (rev 14284) +++ trunk/eXist/extensions/debuggee/test/org/exist/debugger/DebuggerTest.java 2011-04-24 10:12:35 UTC (rev 14285) @@ -430,32 +430,32 @@ @Test public void testStoredInDB() throws Exception { store("script.xql", script); -// String url = "http://127.0.0.1:8080/exist/rest/db/test/script.xql"; -// -// for (int i = 0; i < 10; i++) { -// Debugger debugger = DebuggerImpl.getDebugger(); -// -// System.out.println("init "+i); -// DebuggingSource debuggerSource = debugger.init(url); -// -// System.out.println("send stepInto"); -// debuggerSource.stepInto(); -// //Thread.sleep(1000); -// -// System.out.println("send getStackFrames"); -// List<Location> stack = debuggerSource.getStackFrames(); -// assertEquals(1, stack.size()); -// assertEquals(8, stack.get(0).getLineBegin()); -// assertEquals(6, stack.get(0).getColumnBegin()); -// -// System.out.println("send stop"); -// debuggerSource.stop(); -// //Thread.sleep(1000); -// -// System.out.println("stoped"); -// -// DebuggerImpl.shutdownDebugger(); -// } + String url = "http://127.0.0.1:8080/exist/rest/db/test/script.xql"; + + for (int i = 0; i < 10; i++) { + Debugger debugger = DebuggerImpl.getDebugger(); + + System.out.println("init "+i); + DebuggingSource debuggerSource = debugger.init(url); + + System.out.println("send stepInto"); + debuggerSource.stepInto(); + //Thread.sleep(1000); + + System.out.println("send getStackFrames"); + List<Location> stack = debuggerSource.getStackFrames(); + assertEquals(1, stack.size()); + assertEquals(16, stack.get(0).getLineBegin()); + assertEquals(18, stack.get(0).getColumnBegin()); + + System.out.println("send stop"); + debuggerSource.stop(); + //Thread.sleep(1000); + + System.out.println("stoped"); + + DebuggerImpl.shutdownDebugger(); + } } static org.exist.start.Main database; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |