Software Engineering for Smart Data Analytics & Smart Data Analytics for Software Engineering
How to resolve the “Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/…” when reading a HTML-Page containing a DOCTYPE-Definition. Example is using the SAXBuilder and getting the page “news.html” from the directory “test/testData” for Project “Op4Mo”:
import edu.bonn.cs.sems.help.EntityResolverImpl; ... SAXBuilder builder = new SAXBuilder(); builder.setEntityResolver(new EntityResolverImpl()); File inputFile = new File(TestData.getTestDataDir("Op4Mo"),"news.html"); Document inputDocument = builder.build(inputFile);
Creating a Jena-Model with a postgres-database backend
String className = "org.postgresql.Driver"; // path of driver class Class.forName (className); // Load the Driver String DB_URL = "jdbc:postgresql://localhost:5432/jena"; // URL of database String DB_USER = "jena"; // database user id String DB_PASSWD = "jena"; // database password String DB = "PostgreSQL"; // database type // Create database connection IDBConnection conn = new DBConnection ( DB_URL, DB_USER, DB_PASSWD, DB ); ModelMaker maker = ModelFactory.createModelRDBMaker(conn) ; // create or open the default model Model model = maker.createDefaultModel();
Getting the XPath element:
<code javascript>
function getXPath(node) {
var path = getXPathArray(node); if (! path || (path.length == 0)) return ''; var result = path.shift(); var next; while (next = path.shift()) result = result + "/" + next; return result;
}
function getXPathArray(node, path) {
path = path || []; if(node.parentNode) { path = getXPathArray(node.parentNode, path); }
if(node.previousSibling) { var count = 1; var sibling = node.previousSibling do { if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;} sibling = sibling.previousSibling; } while(sibling); if(count == 1) {count = null;} } else if(node.nextSibling) { var sibling = node.nextSibling; do { if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) { var count = 1; sibling = null; } else { var count = null; sibling = sibling.previousSibling; } } while(sibling); }
if(node.nodeType == 1) { path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : '')); } return path;
}; </Code>
To convert this XPath into an simplified XPath-Expression used with SemS Subjects, see edu.bonn.cs.sems.analysis.helper.LogHelper.simplifyXPath(String) in the SemSAnalyzer project.
How to test using EasyMock
//create mock object for ContextManager and add the getContext method to be mocked ContextManager mockContextManager = createMockBuilder(ContextManager.class) .addMockedMethod("getContext").createMock(); //create mock object for the Context object and add the getValue method to be mocked Context mockContext= createMockBuilder(ContextImpl.class) .addMockedMethod("getValue",String.class).createMock(); //set the expectation for the mockcontextManager and the return value expect(mockContextManager.getContext()).andReturn(mockContext); //set the expectation for the mockcontextManager and the return value expect(mockContext.getValue(Context.SENSOR_BROWSER_MOBILITY)). andReturn("cell"); //swith the mock objects to replay state replay(mockContextManager); replay(mockContext); Assert.assertTrue("the return is false",filter.createJDomHandler(stringBufOS,null,null,null,"utf-8",mockContextManager ).processJDOM(doc)); //verify that the specified behavior has been used verify(mockContextManager); verify(mockContext); System.out.println("test"+buf.toString());
EasyMock from the Project Code
@Test public void testConnectDatabaseMenuItem() throws Exception { systemUnderTest = createMockBuilder(MainViewControllerImpl.class) .addMockedMethod("showDatabaseDialog").createMock(); MenuItem item = createMock(MenuItem.class); Capture<SelectionListener> c = new Capture<SelectionListener>(); item.addSelectionListener(and(isA(SelectionListener.class),capture(c))); // Test if selection listener is added to menu item replay(item); systemUnderTest.setMenuItemConntectDatabase(item); verify(item); // Test if view is closed upon selection reset(systemUnderTest); systemUnderTest.showDatabaseDialog(); replay(systemUnderTest); c.getValue().widgetSelected(null); verify(systemUnderTest); }