diff options
author | Matthias Otterbach | 2017-12-22 06:28:45 +0000 |
---|---|---|
committer | Ivan Motsch | 2017-12-22 09:15:47 +0000 |
commit | 14cde7708571b767913cb77a2a8dee6547b757d3 (patch) | |
tree | 80afdcfe94e774695a0883cadbe9a38a3c87c2f4 | |
parent | 9c02726d773bbdcf4dfde1d8b5bea132ba1734ff (diff) | |
download | org.eclipse.scout.sdk-14cde7708571b767913cb77a2a8dee6547b757d3.tar.gz org.eclipse.scout.sdk-14cde7708571b767913cb77a2a8dee6547b757d3.tar.xz org.eclipse.scout.sdk-14cde7708571b767913cb77a2a8dee6547b757d3.zip |
Use nested instead of anonymous type for array expression
Also add new elements method to access array expression elements
Change-Id: Id7345ed7f39ac6d9e00a9fc33754acf0187c05a5
Reviewed-on: https://git.eclipse.org/r/114628
Tested-by: Hudson CI
Reviewed-by: Ivan Motsch <ivan.motsch@bsiag.com>
-rw-r--r-- | org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java | 60 |
1 files changed, 37 insertions, 23 deletions
diff --git a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java index ef288c5ae..e881d9310 100644 --- a/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java +++ b/org.eclipse.scout.sdk.core/src/main/java/org/eclipse/scout/sdk/core/sourcebuilder/ExpressionSourceBuilderFactory.java @@ -87,29 +87,7 @@ public final class ExpressionSourceBuilderFactory { * @return an array builder that creates a { ... } expression that can be used for annotation values of type array */ public static ISourceBuilder createArray(final Collection<? extends ISourceBuilder> elements, final boolean formatWithNewlines) { - return new ISourceBuilder() { - @Override - public void createSource(StringBuilder source, String lineDelimiter, PropertyMap context, IImportValidator validator) { - //use newlines on multi-dimensional arrays and annotation arrays only - String blockSeparator = formatWithNewlines ? lineDelimiter : " "; - source.append('{'); - source.append(blockSeparator); - int n = elements.size(); - if (n > 0) { - int i = 0; - for (ISourceBuilder element : elements) { - if (i > 0) { - source.append(','); - source.append(blockSeparator); - } - element.createSource(source, lineDelimiter, context, validator); - i++; - } - source.append(blockSeparator); - } - source.append('}'); - } - }; + return new ArrayExpressionSourceBuilder(elements, formatWithNewlines); } public static ISourceBuilder createFromMetaValue(final IMetaValue metaValue) { @@ -161,4 +139,40 @@ public final class ExpressionSourceBuilderFactory { return new RawSourceBuilder("UNKNOWN(" + metaValue.type() + ", " + metaValue + ")"); } } + + public static class ArrayExpressionSourceBuilder implements ISourceBuilder { + private final boolean m_formatWithNewlines; + private final Collection<? extends ISourceBuilder> m_elements; + + public ArrayExpressionSourceBuilder(Collection<? extends ISourceBuilder> elements, boolean formatWithNewlines) { + m_formatWithNewlines = formatWithNewlines; + m_elements = elements; + } + + public Collection<? extends ISourceBuilder> getElements() { + return m_elements; + } + + @Override + public void createSource(StringBuilder source, String lineDelimiter, PropertyMap context, IImportValidator validator) { + //use newlines on multi-dimensional arrays and annotation arrays only + String blockSeparator = m_formatWithNewlines ? lineDelimiter : " "; + source.append('{'); + source.append(blockSeparator); + int n = m_elements.size(); + if (n > 0) { + int i = 0; + for (ISourceBuilder element : m_elements) { + if (i > 0) { + source.append(','); + source.append(blockSeparator); + } + element.createSource(source, lineDelimiter, context, validator); + i++; + } + source.append(blockSeparator); + } + source.append('}'); + } + } } |