SDA SE WikiSoftware 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);
}