From 86d6ce6f5f6dfad4a361e0907e6da21d18e4b14d Mon Sep 17 00:00:00 2001 From: Juho Jeong Date: Sun, 23 Jun 2019 02:19:05 +0900 Subject: [PATCH] Polishing --- .../component/bean/AnnotatedConfigParser.java | 2 +- .../core/context/rule/DispatchRule.java | 17 ++++--- .../appender/HybridRuleAppendHandler.java | 4 +- .../rule/converter/ParamsToRuleConverter.java | 22 +++++++--- .../aspectran/core/util/apon/AponReader.java | 2 +- .../aspectran/core/util/apon/AponWriter.java | 44 ++++++++++++------- .../core/util/apon/AponReadWriteTest.java | 1 - .../command/builtins/ComponentCommand.java | 8 ++-- .../shell/command/builtins/AspectCommand.java | 2 +- .../shell/command/builtins/JobCommand.java | 4 +- .../command/builtins/TransletCommand.java | 2 +- 11 files changed, 67 insertions(+), 41 deletions(-) diff --git a/core/src/main/java/com/aspectran/core/component/bean/AnnotatedConfigParser.java b/core/src/main/java/com/aspectran/core/component/bean/AnnotatedConfigParser.java index 5c0c50b27..9580732b6 100755 --- a/core/src/main/java/com/aspectran/core/component/bean/AnnotatedConfigParser.java +++ b/core/src/main/java/com/aspectran/core/component/bean/AnnotatedConfigParser.java @@ -619,7 +619,7 @@ private TransformRule parseTransformRule(Transform transformAnno) { return transformRule; } - private DispatchRule parseDispatchRule(Dispatch dispatchAnno) { + private DispatchRule parseDispatchRule(Dispatch dispatchAnno) throws IllegalRuleException { String name = StringUtils.emptyToNull(dispatchAnno.value()); if (name == null) { name = StringUtils.emptyToNull(dispatchAnno.name()); diff --git a/core/src/main/java/com/aspectran/core/context/rule/DispatchRule.java b/core/src/main/java/com/aspectran/core/context/rule/DispatchRule.java index 76e2ab675..8534bc5cf 100644 --- a/core/src/main/java/com/aspectran/core/context/rule/DispatchRule.java +++ b/core/src/main/java/com/aspectran/core/context/rule/DispatchRule.java @@ -79,17 +79,18 @@ public String getName(Activity activity) { * @param name the new dispatch name */ public void setName(String name) { + if (name == null) { + setName(null, null); + return; + } this.name = name; - List tokens = Tokenizer.tokenize(name, true); int tokenCount = 0; - for (Token t : tokens) { if (t.getType() != TokenType.TEXT) { tokenCount++; } } - if (tokenCount > 0) { this.nameTokens = tokens.toArray(new Token[0]); } else { @@ -219,9 +220,13 @@ public String toString(ViewDispatcher viewDispatcher, String targetName) { * @param encoding the character encoding * @param defaultResponse whether it is the default response * @return an instance of DispatchRule + * @throws IllegalRuleException if an illegal rule is found */ public static DispatchRule newInstance(String name, String dispatcherName, String contentType, - String encoding, Boolean defaultResponse) { + String encoding, Boolean defaultResponse) throws IllegalRuleException { + if (name == null) { + throw new IllegalRuleException("name must not be null"); + } DispatchRule dr = new DispatchRule(); dr.setName(name); dr.setDispatcherName(dispatcherName); @@ -239,8 +244,10 @@ public static DispatchRule newInstance(String name, String dispatcherName, Strin * @param contentType the content type * @param encoding the character encoding * @return the dispatch rule + * @throws IllegalRuleException if an illegal rule is found */ - public static DispatchRule newInstance(String name, String dispatcher, String contentType, String encoding) { + public static DispatchRule newInstance(String name, String dispatcher, String contentType, String encoding) + throws IllegalRuleException { return newInstance(name, dispatcher, contentType, encoding, null); } diff --git a/core/src/main/java/com/aspectran/core/context/rule/appender/HybridRuleAppendHandler.java b/core/src/main/java/com/aspectran/core/context/rule/appender/HybridRuleAppendHandler.java index a6c37fbea..e2f010d30 100755 --- a/core/src/main/java/com/aspectran/core/context/rule/appender/HybridRuleAppendHandler.java +++ b/core/src/main/java/com/aspectran/core/context/rule/appender/HybridRuleAppendHandler.java @@ -132,9 +132,9 @@ private void saveAsAponFile(FileRuleAppender fileRuleAppender) { AponWriter aponWriter; if (encoding != null) { OutputStream outputStream = new FileOutputStream(aponFile); - aponWriter = new AponWriter(new OutputStreamWriter(outputStream, encoding)); + aponWriter = new AponWriter(new OutputStreamWriter(outputStream, encoding), false); } else { - aponWriter = new AponWriter(new FileWriter(aponFile)); + aponWriter = new AponWriter(new FileWriter(aponFile), false); } try { diff --git a/core/src/main/java/com/aspectran/core/context/rule/converter/ParamsToRuleConverter.java b/core/src/main/java/com/aspectran/core/context/rule/converter/ParamsToRuleConverter.java index fe68bb73c..15a40215b 100755 --- a/core/src/main/java/com/aspectran/core/context/rule/converter/ParamsToRuleConverter.java +++ b/core/src/main/java/com/aspectran/core/context/rule/converter/ParamsToRuleConverter.java @@ -275,22 +275,28 @@ private void convertAsAspectRule(AspectParameters aspectParameters) throws Illeg AdviceActionParameters beforeAdviceParameters = adviceParameters.getParameters(AdviceParameters.beforeAdvice); if (beforeAdviceParameters != null) { ActionParameters actionParameters = beforeAdviceParameters.getParameters(AdviceActionParameters.action); - AspectAdviceRule aspectAdviceRule = aspectRule.touchAspectAdviceRule(AspectAdviceType.BEFORE); - convertAsActionRule(actionParameters, aspectAdviceRule); + if (actionParameters != null) { + AspectAdviceRule aspectAdviceRule = aspectRule.touchAspectAdviceRule(AspectAdviceType.BEFORE); + convertAsActionRule(actionParameters, aspectAdviceRule); + } } AdviceActionParameters afterAdviceParameters = adviceParameters.getParameters(AdviceParameters.afterAdvice); if (afterAdviceParameters != null) { ActionParameters actionParameters = afterAdviceParameters.getParameters(AdviceActionParameters.action); - AspectAdviceRule aspectAdviceRule = aspectRule.touchAspectAdviceRule(AspectAdviceType.AFTER); - convertAsActionRule(actionParameters, aspectAdviceRule); + if (actionParameters != null) { + AspectAdviceRule aspectAdviceRule = aspectRule.touchAspectAdviceRule(AspectAdviceType.AFTER); + convertAsActionRule(actionParameters, aspectAdviceRule); + } } AdviceActionParameters aroundAdviceParameters = adviceParameters.getParameters(AdviceParameters.aroundAdvice); if (aroundAdviceParameters != null) { ActionParameters actionParameters = aroundAdviceParameters.getParameters(AdviceActionParameters.action); - AspectAdviceRule aspectAdviceRule = aspectRule.touchAspectAdviceRule(AspectAdviceType.AROUND); - convertAsActionRule(actionParameters, aspectAdviceRule); + if (actionParameters != null) { + AspectAdviceRule aspectAdviceRule = aspectRule.touchAspectAdviceRule(AspectAdviceType.AROUND); + convertAsActionRule(actionParameters, aspectAdviceRule); + } } AdviceActionParameters finallyAdviceParameters = adviceParameters.getParameters(AdviceParameters.finallyAdvice); @@ -840,7 +846,9 @@ private TransformRule convertAsTransformRule(TransformParameters transformParame } if (callParameters != null) { String templateId = StringUtils.emptyToNull(callParameters.getString(CallParameters.template)); - TransformRule.updateTemplateId(transformRule, templateId); + if (templateId !=null) { + TransformRule.updateTemplateId(transformRule, templateId); + } } if (templateParameters != null) { String engine = templateParameters.getString(TemplateParameters.engine); diff --git a/core/src/main/java/com/aspectran/core/util/apon/AponReader.java b/core/src/main/java/com/aspectran/core/util/apon/AponReader.java index 574f747a5..e8aaa1bd6 100755 --- a/core/src/main/java/com/aspectran/core/util/apon/AponReader.java +++ b/core/src/main/java/com/aspectran/core/util/apon/AponReader.java @@ -203,7 +203,7 @@ private void read(Parameters parameters, char openBracket, String name, Paramete if (parameterValueType == ParameterValueType.PARAMETERS && CURLY_BRACKET_OPEN != cchar) { throw new AponSyntaxException(lineNumber, line, tline, parameterValue, parameterValueType); } - if (parameterValueType == ParameterValueType.TEXT && ROUND_BRACKET_OPEN != cchar) { + if (parameterValueType == ParameterValueType.TEXT && !NULL.equals(value) && ROUND_BRACKET_OPEN != cchar) { throw new AponSyntaxException(lineNumber, line, tline, parameterValue, parameterValueType); } } diff --git a/core/src/main/java/com/aspectran/core/util/apon/AponWriter.java b/core/src/main/java/com/aspectran/core/util/apon/AponWriter.java index 1b52fe981..001a54da5 100755 --- a/core/src/main/java/com/aspectran/core/util/apon/AponWriter.java +++ b/core/src/main/java/com/aspectran/core/util/apon/AponWriter.java @@ -34,11 +34,11 @@ */ public class AponWriter extends AponFormat implements Flushable, Closeable { - private Writer writer; + private final Writer writer; - private boolean nullWritable = true; + private final boolean nullWritable; - private boolean typeHintWritable = false; + private boolean typeHintWritable; private String indentString = DEFAULT_INDENT_STRING; @@ -50,7 +50,18 @@ public class AponWriter extends AponFormat implements Flushable, Closeable { * @param writer the character-output stream */ public AponWriter(Writer writer) { + this(writer, true); + } + + /** + * Instantiates a new AponWriter. + * + * @param writer the character-output stream + * @param nullWritable whether to write a null parameter + */ + public AponWriter(Writer writer, boolean nullWritable) { this.writer = writer; + this.nullWritable = nullWritable; } /** @@ -64,30 +75,32 @@ public AponWriter(File file) throws IOException { } /** - * Specifies the indent string. + * Instantiates a new AponWriter. * - * @param indentString the indentation string, by default " " (two blanks). + * @param file a File object to write to + * @param nullWritable whether to write a null parameter + * @throws IOException if an I/O error occurs */ - public void setIndentString(String indentString) { - this.indentString = indentString; + public AponWriter(File file, boolean nullWritable) throws IOException { + this(new FileWriter(file), nullWritable); } /** - * Sets whether to write a null parameter. + * Sets whether write a type hint for values. * - * @param nullWritable true, write a null parameter + * @param typeHintWritable true, write a type hint for values */ - public void setNullWritable(boolean nullWritable) { - this.nullWritable = nullWritable; + public void setTypeHintWritable(boolean typeHintWritable) { + this.typeHintWritable = typeHintWritable; } /** - * Sets whether write a type hint for values. + * Specifies the indent string. * - * @param typeHintWritable true, write a type hint for values + * @param indentString the indentation string, by default " " (two blanks). */ - public void setTypeHintWritable(boolean typeHintWritable) { - this.typeHintWritable = typeHintWritable; + public void setIndentString(String indentString) { + this.indentString = indentString; } /** @@ -496,7 +509,6 @@ public void close() throws IOException { if (writer != null) { writer.close(); } - writer = null; } /** diff --git a/core/src/test/java/com/aspectran/core/util/apon/AponReadWriteTest.java b/core/src/test/java/com/aspectran/core/util/apon/AponReadWriteTest.java index 36880f1df..02cbc6aa8 100755 --- a/core/src/test/java/com/aspectran/core/util/apon/AponReadWriteTest.java +++ b/core/src/test/java/com/aspectran/core/util/apon/AponReadWriteTest.java @@ -34,7 +34,6 @@ void writeTest() throws IOException, AponParseException { File outputFile = new File(ResourceUtils.getResourceAsFile("config/apon"), "apon-test-output.apon"); try (AponWriter aponWriter = new AponWriter(outputFile)) { - //aponWriter.setNullWritable(true); //aponWriter.setTypeHintWrite(true); aponWriter.write(parameters); } diff --git a/daemon/src/main/java/com/aspectran/daemon/command/builtins/ComponentCommand.java b/daemon/src/main/java/com/aspectran/daemon/command/builtins/ComponentCommand.java index 4417874a1..26fdb760f 100644 --- a/daemon/src/main/java/com/aspectran/daemon/command/builtins/ComponentCommand.java +++ b/daemon/src/main/java/com/aspectran/daemon/command/builtins/ComponentCommand.java @@ -197,7 +197,7 @@ private CommandResult detailAspectRule(DaemonService service, String[] targets) writer.write(AponFormat.NEW_LINE); } - AponWriter aponWriter = new AponWriter(writer); + AponWriter aponWriter = new AponWriter(writer, false); aponWriter.write(aspectParameters); count++; } @@ -324,7 +324,7 @@ private CommandResult detailTransletRule(DaemonService service, String[] targets writer.write(AponFormat.NEW_LINE); } - AponWriter aponWriter = new AponWriter(writer); + AponWriter aponWriter = new AponWriter(writer, false); aponWriter.write(transletParameters); count++; } @@ -381,7 +381,7 @@ private CommandResult detailScheduledJobRule(DaemonService service, String[] tar writer.write("----------------------------------------------------------------------------"); writer.write(AponFormat.NEW_LINE); } - AponWriter aponWriter = new AponWriter(writer); + AponWriter aponWriter = new AponWriter(writer, false); aponWriter.write(scheduleParameters); count++; } @@ -425,7 +425,7 @@ private CommandResult detailScheduledJobRule(DaemonService service, String[] tar writer.write("----------------------------------------------------------------------------"); writer.write(AponFormat.NEW_LINE); } - AponWriter aponWriter = new AponWriter(writer); + AponWriter aponWriter = new AponWriter(writer, false); aponWriter.write(scheduleParameters); count++; } diff --git a/shell/src/main/java/com/aspectran/shell/command/builtins/AspectCommand.java b/shell/src/main/java/com/aspectran/shell/command/builtins/AspectCommand.java index 68d0fc7de..fa2f0a850 100644 --- a/shell/src/main/java/com/aspectran/shell/command/builtins/AspectCommand.java +++ b/shell/src/main/java/com/aspectran/shell/command/builtins/AspectCommand.java @@ -175,7 +175,7 @@ private void detailAspectRule(ShellService service, Console console, String[] as if (count == 0) { console.writeLine("----------------------------------------------------------------------------"); } - AponWriter aponWriter = new AponWriter(console.getWriter()); + AponWriter aponWriter = new AponWriter(console.getWriter(), false); aponWriter.write(aspectParameters); console.writeLine("----------------------------------------------------------------------------"); count++; diff --git a/shell/src/main/java/com/aspectran/shell/command/builtins/JobCommand.java b/shell/src/main/java/com/aspectran/shell/command/builtins/JobCommand.java index b6cfdad6a..f6cece8e0 100644 --- a/shell/src/main/java/com/aspectran/shell/command/builtins/JobCommand.java +++ b/shell/src/main/java/com/aspectran/shell/command/builtins/JobCommand.java @@ -163,7 +163,7 @@ private void detailScheduledJobRule(ShellService service, Console console, Strin if (count == 0) { console.writeLine("----------------------------------------------------------------------------"); } - AponWriter aponWriter = new AponWriter(console.getWriter()); + AponWriter aponWriter = new AponWriter(console.getWriter(), false); aponWriter.write(scheduleParameters); console.writeLine("----------------------------------------------------------------------------"); count++; @@ -179,7 +179,7 @@ private void detailScheduledJobRule(ShellService service, Console console, Strin if (count == 0) { console.writeLine("----------------------------------------------------------------------------"); } - AponWriter aponWriter = new AponWriter(console.getWriter()); + AponWriter aponWriter = new AponWriter(console.getWriter(), false); aponWriter.write(scheduleParameters); console.writeLine("----------------------------------------------------------------------------"); count++; diff --git a/shell/src/main/java/com/aspectran/shell/command/builtins/TransletCommand.java b/shell/src/main/java/com/aspectran/shell/command/builtins/TransletCommand.java index 726b77819..efddb1a9a 100644 --- a/shell/src/main/java/com/aspectran/shell/command/builtins/TransletCommand.java +++ b/shell/src/main/java/com/aspectran/shell/command/builtins/TransletCommand.java @@ -236,7 +236,7 @@ private void detailTransletRule(ShellService service, Console console, String[] if (count == 0) { console.writeLine("----------------------------------------------------------------------------"); } - AponWriter aponWriter = new AponWriter(console.getWriter()); + AponWriter aponWriter = new AponWriter(console.getWriter(), false); aponWriter.write(transletParameters); console.writeLine("----------------------------------------------------------------------------"); count++;