예제 #1
0
  @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);
 }
예제 #3
0
  @Test
  public void getResourceTest() throws IOException {
    org.springframework.core.io.Resource resource =
        resourceLoader.getResource("classpath:log/log4j.xml");

    Assert.assertNotNull(resource);
  }
예제 #4
0
  @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();
    }
  }
예제 #5
0
  @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);
        }
      }
    }
  }
예제 #6
0
 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);
 }
예제 #7
0
 @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;
   }
 }
예제 #8
0
  @Lock(LockType.WRITE)
  public void save() {

    try {
      resourceLoader.getResource().save(Collections.EMPTY_MAP);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
예제 #9
0
 @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);
 }
예제 #10
0
  @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);
  }
예제 #11
0
  @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;
  }