@Lock(LockType.WRITE) public Object get(String type, String id) { String composedId = type + "/" + id; if (store.get(composedId) == null) { store.put(composedId, resourceLoader.getResource().getContents().get(0)); return resourceLoader.getResource().getContents().get(0); } else { return store.get(composedId); } }
private Resource getResourceWithinContext(String uri) { if (resourceLoader == null) throw new IllegalStateException( "TemplateEngine not initialised correctly, no [resourceLoader] specified!"); if (Environment.getCurrent().isReloadEnabled() && Metadata.getCurrent().isWarDeployed()) { return resourceLoader.getResource(uri); } Resource r = servletContextLoader.getResource(uri); if (r.exists()) return r; return resourceLoader.getResource(uri); }
@Test public void getResourceTest() throws IOException { org.springframework.core.io.Resource resource = resourceLoader.getResource("classpath:log/log4j.xml"); Assert.assertNotNull(resource); }
@Lock(LockType.WRITE) public void put(String id, EObject value) { if (store.get(id) == null) { EObject obj = getEObjectByID(id); store.put(id, obj); } EObject obj = store.get(id); EList<EAttribute> eAttributes = obj.eClass().getEAllAttributes(); for (EAttribute eAttribute : eAttributes) { obj.eSet(eAttribute, value.eGet(eAttribute)); store.remove(id); } if (validation.getFlag()) { Diagnostic d = Diagnostician.INSTANCE.validate(obj); if (d.getSeverity() == Diagnostic.ERROR) throw new WebApplicationException(Status.BAD_REQUEST); } try { resourceLoader.getResource().save(Collections.EMPTY_MAP); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
@Override public void render(Parameters blockParameters, Writer w, RenderHints hints) throws FrameworkException { if (decorate) { try { decorateIntro(hints, w, null); } catch (IOException ioe) { throw new FrameworkException(ioe); } } String name = getResource(); ResourceLoader loader = ResourceLoader.Type.valueOf(resourceType.toUpperCase()).get(); try { InputStream is = loader.getResourceAsStream(name); if (is == null) throw new FrameworkException( "No such resource " + loader.getResource(name) + " in " + loader); if (xsl == null) { Reader r = loader.getReader(is, name); char[] buf = new char[1000]; int c; while ((c = r.read(buf, 0, 1000)) > 0) { w.write(buf, 0, c); } } else { /// convert using the xsl and spit out that. URL x = ResourceLoader.getConfigurationRoot().getResource(xsl); Utils.xslTransform(blockParameters, loader.getResource(name), is, w, x); } } catch (IOException ioe) { throw new FrameworkException(ioe); } catch (javax.xml.transform.TransformerException te) { throw new FrameworkException(te.getMessage(), te); } catch (RuntimeException e) { log.debug(e.getMessage(), e); throw e; } finally { if (decorate) { try { decorateOutro(hints, w); } catch (IOException ioe) { throw new FrameworkException(ioe); } } } }
private EObject getEObjectByID(String id) { TreeIterator<EObject> eAllContents = resourceLoader.getResource().getAllContents(); while (eAllContents.hasNext()) { EObject next = eAllContents.next(); if (EcoreUtil.getIdentification(next).equals(id)) return next; } throw new WebApplicationException(Response.Status.NOT_FOUND); }
@Override public URI getUri() { try { ResourceLoader loader = ResourceLoader.Type.valueOf(resourceType.toUpperCase()).get(); return loader.getResource(getResource()).toURI(); } catch (URISyntaxException use) { log.warn(use); return null; } }
@Lock(LockType.WRITE) public void save() { try { resourceLoader.getResource().save(Collections.EMPTY_MAP); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
@Lock(LockType.WRITE) private EObject getEObjectByID(String type, String id) { TreeIterator<EObject> eAllContents = resourceLoader.getResource().getAllContents(); while (eAllContents.hasNext()) { EObject next = eAllContents.next(); if (next.eClass().getInstanceTypeName().equals(type) && EcoreUtil.getID(next) != null && EcoreUtil.getID(next).equals(id)) return next; } throw new WebApplicationException(Response.Status.NOT_FOUND); }
@Override public void processExcption(BeetlException ex, Writer writer) { ErrorInfo error = new ErrorInfo(ex); int line = error.getErrorTokenLine(); StringBuilder sb = new StringBuilder(">>") .append(error.getType()) .append(":") .append(error.getErrorTokenText()) .append(" 位于") .append(line) .append("行") .append(" 资源:") .append(getResourceName(ex.resourceId)); ; println(writer, sb.toString()); if (error.getErrorCode().equals(BeetlException.TEMPLATE_LOAD_ERROR)) { printCause(error, writer); return; } ResourceLoader resLoader = ex.gt.getResourceLoader(); // 潜在问题,此时可能得到是一个新的模板,不过可能性很小,忽略! String content = null; ; try { Resource res = resLoader.getResource(ex.resourceId); // 显示前后三行的内容 int[] range = this.getRange(line); content = res.getContent(range[0], range[1]); if (content != null) { String[] strs = content.split(ex.cr); int lineNumber = range[0]; for (int i = 0; i < strs.length; i++) { print(writer, "" + lineNumber); print(writer, "|"); println(writer, strs[i]); lineNumber++; } } } catch (IOException e) { // ingore } printCause(error, writer); }
@Lock(LockType.WRITE) public Object remove(String id) { if (store.get(id) == null) { EObject obj = getEObjectByID(id); store.put(id, obj); } EObject obj = store.get(id); if (validation.getFlag()) { Diagnostic d = Diagnostician.INSTANCE.validate(obj); if (d.getSeverity() == Diagnostic.ERROR) throw new WebApplicationException(Status.BAD_REQUEST); } EcoreUtil.delete(obj); store.remove(id); try { resourceLoader.getResource().save(Collections.EMPTY_MAP); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; }