You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2017/11/30 14:16:33 UTC
[myfaces-tobago] branch master updated: TOBAGO-1782: Clean up *
using "try with resources" (new with Java 7) * Exception Handling
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/master by this push:
new 67ba08a TOBAGO-1782: Clean up * using "try with resources" (new with Java 7) * Exception Handling
67ba08a is described below
commit 67ba08af84aa49e9fafb169b001e68ae1e99b10e
Author: Udo Schnurpfeil <lo...@apache.org>
AuthorDate: Thu Nov 30 14:51:08 2017 +0100
TOBAGO-1782: Clean up
* using "try with resources" (new with Java 7)
* Exception Handling
---
.../tobago/example/demo/NavigationTree.java | 6 +-
.../tobago/example/demo/SourceFileReader.java | 9 +-
.../demo/bestpractice/BestPracticeController.java | 19 +--
.../tobago/apt/processor/AbstractGenerator.java | 7 +-
.../tobago/apt/processor/ClassesGenerator.java | 4 +-
.../tobago/apt/processor/FacesConfigGenerator.java | 155 ++++++++++-----------
6 files changed, 96 insertions(+), 104 deletions(-)
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java
index 57e0c62..ffbdc62 100644
--- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/NavigationTree.java
@@ -156,15 +156,11 @@ public class NavigationTree implements Serializable {
final FacesContext facesContext = FacesContext.getCurrentInstance();
final ExternalContext externalContext = facesContext.getExternalContext();
final String viewId = facesContext.getViewRoot().getViewId();
- InputStream resourceAsStream = null;
- try {
- resourceAsStream = externalContext.getResourceAsStream(viewId);
+ try (final InputStream resourceAsStream = externalContext.getResourceAsStream(viewId)) {
return IOUtils.toString(resourceAsStream, "UTF-8");
} catch (final IOException e) {
LOG.error("", e);
return "error";
- } finally {
- IOUtils.closeQuietly(resourceAsStream);
}
}
}
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SourceFileReader.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SourceFileReader.java
index dcea550..94e05c3 100644
--- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SourceFileReader.java
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SourceFileReader.java
@@ -25,6 +25,7 @@ import org.slf4j.LoggerFactory;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
+import java.io.IOException;
import java.io.InputStream;
public abstract class SourceFileReader {
@@ -36,15 +37,11 @@ public abstract class SourceFileReader {
final ExternalContext externalContext = facesContext.getExternalContext();
final String viewId = facesContext.getViewRoot().getViewId();
final String file = viewId.substring(0, viewId.lastIndexOf("/")) + "/" + filename;
- InputStream resourceAsStream = null;
- try {
- resourceAsStream = externalContext.getResourceAsStream(file);
+ try (final InputStream resourceAsStream = externalContext.getResourceAsStream(file)) {
return IOUtils.toString(resourceAsStream, "UTF-8");
- } catch (final Exception e) {
+ } catch (final IOException e) {
LOG.error("", e);
return null;
- } finally {
- IOUtils.closeQuietly(resourceAsStream);
}
}
}
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/bestpractice/BestPracticeController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/bestpractice/BestPracticeController.java
index 83f2c71..53b7361 100644
--- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/bestpractice/BestPracticeController.java
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/bestpractice/BestPracticeController.java
@@ -55,13 +55,7 @@ public class BestPracticeController {
final FacesContext facesContext = FacesContext.getCurrentInstance();
- InputStream inputStream = null;
- try {
- final String path = "content/30-concept/24-non-faces-response/x-sample." + (pdf ? "pdf" : "txt");
- inputStream = facesContext.getExternalContext().getResourceAsStream(path);
- if (inputStream == null) {
- inputStream = facesContext.getExternalContext().getResourceAsStream("/" + path);
- }
+ try (final InputStream inputStream = getInputStream(pdf, facesContext)) {
final HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
response.setContentType(pdf ? "application/pdf" : "text/plain");
if (outside) {
@@ -71,13 +65,20 @@ public class BestPracticeController {
} catch (final IOException e) {
LOG.warn("Cannot deliver " + (pdf ? "pdf" : "txt"), e);
return "error"; // response via faces
- } finally {
- IOUtils.closeQuietly(inputStream);
}
facesContext.responseComplete();
return null;
}
+ private InputStream getInputStream(boolean pdf, FacesContext facesContext) {
+ final String path = "content/30-concept/24-non-faces-response/x-sample." + (pdf ? "pdf" : "txt");
+ InputStream inputStream = facesContext.getExternalContext().getResourceAsStream(path);
+ if (inputStream == null) {
+ inputStream = facesContext.getExternalContext().getResourceAsStream("/" + path);
+ }
+ return inputStream;
+ }
+
public String getStatus() {
return status;
}
diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/AbstractGenerator.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/AbstractGenerator.java
index deb6e4b..f8a6f58 100644
--- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/AbstractGenerator.java
+++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/AbstractGenerator.java
@@ -87,7 +87,8 @@ public abstract class AbstractGenerator extends AbstractProcessor {
protected abstract void configure();
- protected abstract void generate() throws Exception;
+ protected abstract void generate()
+ throws Exception;
protected void info(final String message) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE,
@@ -103,7 +104,9 @@ public abstract class AbstractGenerator extends AbstractProcessor {
final StringWriter out = new StringWriter();
e.printStackTrace(new PrintWriter(out));
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
- "<" + getClass().getSimpleName() + "> " + e.getMessage() + "\n" + out.toString());
+ "<" + getClass().getSimpleName() + "> " + e.getMessage() + "\n"
+ + (e.getCause() != null ? e.getCause().getMessage() + "\n" : "")
+ + out.toString());
}
public List<TypeElement> getTypes() {
diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java
index 239795a..ff8afaf 100644
--- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java
+++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/ClassesGenerator.java
@@ -86,12 +86,12 @@ public class ClassesGenerator extends AbstractGenerator {
}
@Override
- public void generate() throws Exception {
+ public void generate() {
for (final TypeElement element : getTypes()) {
if (element.getAnnotation(UIComponentTag.class) != null) {
try {
createTagOrComponent(element);
- } catch (final Exception e) {
+ } catch (final IOException|ClassNotFoundException|RuntimeException e) {
throw new TobagoGeneratorException(
"Error during processing of " + element.getAnnotation(UIComponentTag.class).uiComponent(), e);
}
diff --git a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/FacesConfigGenerator.java b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/FacesConfigGenerator.java
index b7c2a4a..d587c20 100644
--- a/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/FacesConfigGenerator.java
+++ b/tobago-tool/tobago-tool-apt/src/main/java/org/apache/myfaces/tobago/apt/processor/FacesConfigGenerator.java
@@ -151,94 +151,89 @@ public class FacesConfigGenerator extends AbstractGenerator {
@Override
protected void generate() throws Exception {
final Document document;
- Writer writer = null;
- try {
- final String content = IOUtils.toString(new FileInputStream(sourceFacesConfigFile));
- final SAXBuilder builder = new SAXBuilder();
- document = builder.build(new StringReader(content));
-
- // Normalise line endings. For some reason, JDOM replaces \r\n inside a comment with \n.
- normaliseLineEndings(document);
-
- // rewrite DOM as a string to find differences, since text outside the root element is not tracked
-
- final org.jdom2.Element rootElement = document.getRootElement();
-
- rootElement.setNamespace(Namespace.getNamespace("http://java.sun.com/xml/ns/javaee"));
- final Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
- rootElement.addNamespaceDeclaration(Namespace.getNamespace("xi", "http://www.w3.org/2001/XInclude"));
- rootElement.setAttribute(new Attribute("schemaLocation",
- "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd", xsi));
- rootElement.setAttribute("version", "2.0");
-
- final Namespace namespace = rootElement.getNamespace();
- applyNamespace(rootElement, namespace);
- final List<org.jdom2.Element> components = rootElement.getChildren(COMPONENT, namespace);
-
- final List<org.jdom2.Element> newComponents = new ArrayList<>();
- final List<org.jdom2.Element> newRenderer = new ArrayList<>();
- final List<org.jdom2.Element> newConverters = new ArrayList<>();
- final List<org.jdom2.Element> newValidators = new ArrayList<>();
-
- for (final TypeElement element : getTypes()) {
- if (element.getAnnotation(UIComponentTag.class) != null) {
- addElement(element, newComponents, newRenderer, namespace);
- } else if (element.getAnnotation(Converter.class) != null) {
- addConverter(element, newConverters, namespace);
- } else if (element.getAnnotation(Validator.class) != null) {
- addValidator(element, newValidators, namespace);
- }
+ final String content = IOUtils.toString(new FileInputStream(sourceFacesConfigFile));
+ final SAXBuilder builder = new SAXBuilder();
+ document = builder.build(new StringReader(content));
+
+ // Normalise line endings. For some reason, JDOM replaces \r\n inside a comment with \n.
+ normaliseLineEndings(document);
+
+ // rewrite DOM as a string to find differences, since text outside the root element is not tracked
+
+ final org.jdom2.Element rootElement = document.getRootElement();
+
+ rootElement.setNamespace(Namespace.getNamespace("http://java.sun.com/xml/ns/javaee"));
+ final Namespace xsi = Namespace.getNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
+ rootElement.addNamespaceDeclaration(Namespace.getNamespace("xi", "http://www.w3.org/2001/XInclude"));
+ rootElement.setAttribute(new Attribute("schemaLocation",
+ "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd", xsi));
+ rootElement.setAttribute("version", "2.0");
+
+ final Namespace namespace = rootElement.getNamespace();
+ applyNamespace(rootElement, namespace);
+ final List<org.jdom2.Element> components = rootElement.getChildren(COMPONENT, namespace);
+
+ final List<org.jdom2.Element> newComponents = new ArrayList<>();
+ final List<org.jdom2.Element> newRenderer = new ArrayList<>();
+ final List<org.jdom2.Element> newConverters = new ArrayList<>();
+ final List<org.jdom2.Element> newValidators = new ArrayList<>();
+
+ for (final TypeElement element : getTypes()) {
+ if (element.getAnnotation(UIComponentTag.class) != null) {
+ addElement(element, newComponents, newRenderer, namespace);
+ } else if (element.getAnnotation(Converter.class) != null) {
+ addConverter(element, newConverters, namespace);
+ } else if (element.getAnnotation(Validator.class) != null) {
+ addValidator(element, newValidators, namespace);
}
+ }
- final List<org.jdom2.Element> elementsToAdd = new ArrayList<>();
- // sort out duplicates
- for (final org.jdom2.Element newElement : newComponents) {
- final boolean found = containsElement(components, newElement);
- if (!found) {
- elementsToAdd.add(newElement);
- }
- }
- if (!elementsToAdd.isEmpty()) {
- // if faces-config contains no component section add the components after factory or application
- final int lastIndex = getIndexAfter(rootElement, COMPONENT, FACTORY, APPLICATION);
- rootElement.addContent(lastIndex, elementsToAdd);
- }
- if (!newRenderer.isEmpty()) {
- org.jdom2.Element renderKit = getFirstElementByName(rootElement, RENDER_KIT);
- if (renderKit == null) {
- renderKit = new org.jdom2.Element(RENDER_KIT, namespace);
- final int last = getIndexAfter(rootElement, CONVERTER, COMPONENT, FACTORY, APPLICATION, BEHAVIOR);
- rootElement.addContent(last, renderKit);
- }
- final org.jdom2.Element renderKitId = new org.jdom2.Element(RENDER_KIT_ID, namespace);
- renderKitId.setText("tobago");
- renderKit.addContent(0, renderKitId);
- final org.jdom2.Element renderKitClass = new org.jdom2.Element(RENDER_KIT_CLASS, namespace);
- renderKitClass.setText("org.apache.myfaces.tobago.renderkit.TobagoRenderKit");
- renderKit.addContent(1, renderKitClass);
- renderKit.addContent(2, newRenderer);
- }
- if (!newConverters.isEmpty()) {
- final int last = getIndexAfter(rootElement, RENDER_KIT, CONVERTER, COMPONENT, FACTORY, APPLICATION, BEHAVIOR);
- rootElement.addContent(last, newConverters);
+ final List<org.jdom2.Element> elementsToAdd = new ArrayList<>();
+ // sort out duplicates
+ for (final org.jdom2.Element newElement : newComponents) {
+ final boolean found = containsElement(components, newElement);
+ if (!found) {
+ elementsToAdd.add(newElement);
}
- if (!newValidators.isEmpty()) {
- rootElement.addContent(newValidators);
+ }
+ if (!elementsToAdd.isEmpty()) {
+ // if faces-config contains no component section add the components after factory or application
+ final int lastIndex = getIndexAfter(rootElement, COMPONENT, FACTORY, APPLICATION);
+ rootElement.addContent(lastIndex, elementsToAdd);
+ }
+ if (!newRenderer.isEmpty()) {
+ org.jdom2.Element renderKit = getFirstElementByName(rootElement, RENDER_KIT);
+ if (renderKit == null) {
+ renderKit = new org.jdom2.Element(RENDER_KIT, namespace);
+ final int last = getIndexAfter(rootElement, CONVERTER, COMPONENT, FACTORY, APPLICATION, BEHAVIOR);
+ rootElement.addContent(last, renderKit);
}
- final FileObject resource = processingEnv.getFiler().createResource(
- StandardLocation.SOURCE_OUTPUT, "", targetFacesConfigFile);
- info("Writing to file: " + resource.toUri());
- writer = resource.openWriter();
+ final org.jdom2.Element renderKitId = new org.jdom2.Element(RENDER_KIT_ID, namespace);
+ renderKitId.setText("tobago");
+ renderKit.addContent(0, renderKitId);
+ final org.jdom2.Element renderKitClass = new org.jdom2.Element(RENDER_KIT_CLASS, namespace);
+ renderKitClass.setText("org.apache.myfaces.tobago.renderkit.TobagoRenderKit");
+ renderKit.addContent(1, renderKitClass);
+ renderKit.addContent(2, newRenderer);
+ }
+ if (!newConverters.isEmpty()) {
+ final int last = getIndexAfter(rootElement, RENDER_KIT, CONVERTER, COMPONENT, FACTORY, APPLICATION, BEHAVIOR);
+ rootElement.addContent(last, newConverters);
+ }
+ if (!newValidators.isEmpty()) {
+ rootElement.addContent(newValidators);
+ }
+ final FileObject resource = processingEnv.getFiler().createResource(
+ StandardLocation.SOURCE_OUTPUT, "", targetFacesConfigFile);
+ info("Writing to file: " + resource.toUri());
+ try (Writer writer = resource.openWriter()) {
final StringWriter facesConfig = new StringWriter(1024);
final Format format = Format.getPrettyFormat();
format.setLineSeparator(SEPARATOR);
final XMLOutputter out = new XMLOutputter(format);
out.output(document, facesConfig);
writer.append(facesConfig.toString());
-
- } finally {
- IOUtils.closeQuietly(writer);
}
}
@@ -294,7 +289,7 @@ public class FacesConfigGenerator extends AbstractGenerator {
}
private org.jdom2.Element getEqualElement(
- final List<org.jdom2.Element> components, final org.jdom2.Element newElement) {
+ final List<org.jdom2.Element> components, final org.jdom2.Element newElement) {
for (final org.jdom2.Element element : components) {
if (equals(element, newElement)) {
return element;
@@ -565,7 +560,7 @@ public class FacesConfigGenerator extends AbstractGenerator {
}
private void addFacets(
- final UIComponentTag componentTag, final Namespace namespace, final org.jdom2.Element element) {
+ final UIComponentTag componentTag, final Namespace namespace, final org.jdom2.Element element) {
final Facet[] facets = componentTag.facets();
for (final Facet facet : facets) {
final org.jdom2.Element facetElement = new org.jdom2.Element(FACET, namespace);
@@ -580,7 +575,7 @@ public class FacesConfigGenerator extends AbstractGenerator {
facetElement.addContent(facetName);
final org.jdom2.Element facetExtension = new org.jdom2.Element(FACET_EXTENSION, namespace);
final org.jdom2.Element elementAllowedChildComponents
- = new org.jdom2.Element(ALLOWED_CHILD_COMPONENTS, namespace);
+ = new org.jdom2.Element(ALLOWED_CHILD_COMPONENTS, namespace);
final String[] allowedChildComponents = facet.allowedChildComponenents();
final StringBuilder allowedComponentTypes = new StringBuilder();
for (final String componentType : allowedChildComponents) {
--
To stop receiving notification emails like this one, please contact
['"commits@myfaces.apache.org" <co...@myfaces.apache.org>'].