private void processOutputModelRequest(VitroRequest vreq, HttpServletResponse response) { String modelNameStr = vreq.getParameter("modelName"); Model model = getModel(modelNameStr,vreq); JenaOutputUtils.setNameSpacePrefixes(model,vreq.getWebappDaoFactory()); model.enterCriticalSection(Lock.READ); try { OutputStream out = response.getOutputStream(); response.setContentType("application/x-turtle"); //out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n".getBytes()); model.write(out, "TTL"); out.flush(); out.close(); } catch (org.apache.jena.shared.CannotEncodeCharacterException cece) { // there's got to be a better way to do this byte[] badCharBytes = String.valueOf(cece.getBadChar()).getBytes(); StringBuilder errorMsg = new StringBuilder("Cannot encode character with byte values: (decimal) "); for (byte badCharByte : badCharBytes) { errorMsg.append(badCharByte); } throw new RuntimeException(errorMsg.toString(), cece); } catch (Exception e) { log.error(e, e); } finally { model.leaveCriticalSection(); } }
case '&': result.append( "&" ); break; case '>': result.append( ">" ); break; default: throw new CannotEncodeCharacterException( ch, "XML" );
private void testThrowsBadCharacterException( char badChar, String lang ) { String badString = "" + badChar; Model m = ModelFactory.createDefaultModel(); m.createResource().addProperty(RDF.value, badString); Writer w = new Writer(){ @Override public void close() throws IOException {} @Override public void flush() throws IOException {} @Override public void write(char[] arg0, int arg1, int arg2) throws IOException {} }; try { m.write(w,lang); // Util.substituteEntitiesInElementContent( badString ); fail( "should trap bad character: (char)" + (int) badChar ); } catch (CannotEncodeCharacterException e) { assertEquals( badChar, e.getBadChar() ); assertEquals( "XML", e.getEncodingContext() ); } }
private void testThrowsBadCharacterException( char badChar, String lang ) { String badString = "" + badChar; Model m = ModelFactory.createDefaultModel(); m.createResource().addProperty(RDF.value, badString); Writer w = new Writer(){ @Override public void close() throws IOException {} @Override public void flush() throws IOException {} @Override public void write(char[] arg0, int arg1, int arg2) throws IOException {} }; try { m.write(w,lang); // Util.substituteEntitiesInElementContent( badString ); fail( "should trap bad character: (char)" + (int) badChar ); } catch (CannotEncodeCharacterException e) { assertEquals( badChar, e.getBadChar() ); assertEquals( "XML", e.getEncodingContext() ); } }
case '&': result.append( "&" ); break; case '>': result.append( ">" ); break; default: throw new CannotEncodeCharacterException( ch, "XML" );