Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Otterbach2017-12-22 06:28:45 +0000
committerIvan Motsch2017-12-22 09:15:47 +0000
commit14cde7708571b767913cb77a2a8dee6547b757d3 (patch)
tree80afdcfe94e774695a0883cadbe9a38a3c87c2f4
parent9c02726d773bbdcf4dfde1d8b5bea132ba1734ff (diff)
downloadorg.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.java60
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('}');
+ }
+ }
}

Back to the top