test_class.declarator: THING_NAME = "foobar199"
test_class.modifier: private static final
test_class.original_string: private static final String THING_NAME = "foobar199";
test_class.type: String
test_class.var_name: THING_NAME
test_class.declarator: THING_NAMESPACE = "org.eclipse.ditto"
test_class.modifier: private static final
test_class.original_string: private static final String THING_NAMESPACE = "org.eclipse.ditto";
test_class.type: String
test_class.var_name: THING_NAMESPACE
test_class.declarator: THING_ID = ThingId.of(THING_NAMESPACE, THING_NAME)
test_class.modifier: private static final
test_class.original_string: private static final ThingId THING_ID = ThingId.of(THING_NAMESPACE, THING_NAME);
test_class.type: ThingId
test_class.var_name: THING_ID
test_class.declarator: KNOWN_TOPIC = "org.eclipse.ditto/" + THING_NAME + "/things/twin/commands/modify"
test_class.modifier: private static final
test_class.original_string: private static final String KNOWN_TOPIC = "org.eclipse.ditto/" + THING_NAME + "/things/twin/commands/modify";
test_class.type: String
test_class.var_name: KNOWN_TOPIC
test_class.declarator: KNOWN_HEADERS =
              DittoHeaders.newBuilder().putHeader("one", "1").putHeader("two", "2").build()
test_class.modifier: private static final
test_class.original_string: private static final Map<String, String> KNOWN_HEADERS =
              DittoHeaders.newBuilder().putHeader("one", "1").putHeader("two", "2").build();
test_class.type: Map<String, String>
test_class.var_name: KNOWN_HEADERS
test_class.declarator: UNKNOWN_HEADER_EXPRESSION = "{{ header:missing }}"
test_class.modifier: private static final
test_class.original_string: private static final String UNKNOWN_HEADER_EXPRESSION = "{{ header:missing }}";
test_class.type: String
test_class.var_name: UNKNOWN_HEADER_EXPRESSION
test_class.declarator: UNKNOWN_THING_EXPRESSION = "{{ thing:missing }}"
test_class.modifier: private static final
test_class.original_string: private static final String UNKNOWN_THING_EXPRESSION = "{{ thing:missing }}";
test_class.type: String
test_class.var_name: UNKNOWN_THING_EXPRESSION
test_class.declarator: UNKNOWN_TOPIC_EXPRESSION = "{{ topic:missing }}"
test_class.modifier: private static final
test_class.original_string: private static final String UNKNOWN_TOPIC_EXPRESSION = "{{ topic:missing }}";
test_class.type: String
test_class.var_name: UNKNOWN_TOPIC_EXPRESSION
test_class.declarator: underTest
test_class.modifier: private static
test_class.original_string: private static ImmutableExpressionResolver underTest;
test_class.type: ImmutableExpressionResolver
test_class.var_name: underTest
test_class.file: model/placeholders/src/test/java/org/eclipse/ditto/model/placeholders/ImmutableExpressionResolverTest.java
test_class.identifier: ImmutableExpressionResolverTest
test_case.body: @Test
      public void testSuccessfulPlaceholderResolution() {
  
          assertThat(underTest.resolve("{{ header:one }}"))
                  .contains(KNOWN_HEADERS.get("one"));
          assertThat(underTest.resolve("{{ header:two }}"))
                  .contains(KNOWN_HEADERS.get("two"));
          assertThat(underTest.resolve("{{ thing:id }}"))
                  .contains(THING_ID.toString());
          assertThat(underTest.resolve("{{ thing:name }}"))
                  .contains(THING_NAME);
          assertThat(underTest.resolve("{{ topic:full }}"))
                  .contains(KNOWN_TOPIC);
          assertThat(underTest.resolve("{{ topic:entityId }}"))
                  .contains(THING_NAME);
  
          // verify different whitespace
          assertThat(underTest.resolve("{{topic:entityId }}"))
                  .contains(THING_NAME);
          assertThat(underTest.resolve("{{topic:entityId}}"))
                  .contains(THING_NAME);
          assertThat(underTest.resolve("{{        topic:entityId}}"))
                  .contains(THING_NAME);
      }
test_case.class_method_signature: ImmutableExpressionResolverTest.testSuccessfulPlaceholderResolution()
test_case.full_signature: @Test public void testSuccessfulPlaceholderResolution()
test_case.identifier: testSuccessfulPlaceholderResolution
test_case.invocations: contains assertThat resolve get contains assertThat resolve get contains assertThat resolve toString contains assertThat resolve contains assertThat resolve contains assertThat resolve contains assertThat resolve contains assertThat resolve contains assertThat resolve
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testSuccessfulPlaceholderResolution()
focal_class.declarator: MAX_COUNT_PIPELINE_FUNCTIONS = 10
focal_class.modifier: private static final
focal_class.original_string: private static final int MAX_COUNT_PIPELINE_FUNCTIONS = 10;
focal_class.type: int
focal_class.var_name: MAX_COUNT_PIPELINE_FUNCTIONS
focal_class.declarator: OR = "|"
focal_class.modifier: private static final
focal_class.original_string: private static final String OR = "|";
focal_class.type: String
focal_class.var_name: OR
focal_class.declarator: NO_QUOTE = "[^|'\"]++"
focal_class.modifier: private static final
focal_class.original_string: private static final String NO_QUOTE = "[^|'\"]++";
focal_class.type: String
focal_class.var_name: NO_QUOTE
focal_class.declarator: SINGLE_QUOTED_STRING =
              String.format("'%s'", PipelineFunction.SINGLE_QUOTED_STRING_CONTENT)
focal_class.modifier: private static final
focal_class.original_string: private static final String SINGLE_QUOTED_STRING =
              String.format("'%s'", PipelineFunction.SINGLE_QUOTED_STRING_CONTENT);
focal_class.type: String
focal_class.var_name: SINGLE_QUOTED_STRING
focal_class.declarator: DOUBLE_QUOTED_STRING =
              String.format("\"%s\"", PipelineFunction.DOUBLE_QUOTED_STRING_CONTENT)
focal_class.modifier: private static final
focal_class.original_string: private static final String DOUBLE_QUOTED_STRING =
              String.format("\"%s\"", PipelineFunction.DOUBLE_QUOTED_STRING_CONTENT);
focal_class.type: String
focal_class.var_name: DOUBLE_QUOTED_STRING
focal_class.declarator: PIPE_STAGE =
              "(?:" + NO_QUOTE + OR + SINGLE_QUOTED_STRING + OR + DOUBLE_QUOTED_STRING + ")++"
focal_class.modifier: private static final
focal_class.original_string: private static final String PIPE_STAGE =
              "(?:" + NO_QUOTE + OR + SINGLE_QUOTED_STRING + OR + DOUBLE_QUOTED_STRING + ")++";
focal_class.type: String
focal_class.var_name: PIPE_STAGE
focal_class.declarator: PIPE_STAGE_PATTERN = Pattern.compile(PIPE_STAGE)
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern PIPE_STAGE_PATTERN = Pattern.compile(PIPE_STAGE);
focal_class.type: Pattern
focal_class.var_name: PIPE_STAGE_PATTERN
focal_class.declarator: PIPE_PATTERN_STR = PIPE_STAGE + "(?:\\|" + PIPE_STAGE + ")*+"
focal_class.modifier: private static final
focal_class.original_string: private static final String PIPE_PATTERN_STR = PIPE_STAGE + "(?:\\|" + PIPE_STAGE + ")*+";
focal_class.type: String
focal_class.var_name: PIPE_PATTERN_STR
focal_class.declarator: PIPE_PATTERN = Pattern.compile(PIPE_PATTERN_STR)
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern PIPE_PATTERN = Pattern.compile(PIPE_PATTERN_STR);
focal_class.type: Pattern
focal_class.var_name: PIPE_PATTERN
focal_class.declarator: UNRESOLVED_INPUT_HANDLER = unresolvedInput ->
              UnresolvedPlaceholderException.newBuilder(unresolvedInput).build()
focal_class.modifier: private static final
focal_class.original_string: private static final Function<String, DittoRuntimeException> UNRESOLVED_INPUT_HANDLER = unresolvedInput ->
              UnresolvedPlaceholderException.newBuilder(unresolvedInput).build();
focal_class.type: Function<String, DittoRuntimeException>
focal_class.var_name: UNRESOLVED_INPUT_HANDLER
focal_class.declarator: placeholderReplacementInValidation
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final String placeholderReplacementInValidation;
focal_class.type: String
focal_class.var_name: placeholderReplacementInValidation
focal_class.declarator: placeholderResolvers
focal_class.modifier: private final
focal_class.original_string: private final Map<String, PlaceholderResolver<?>> placeholderResolvers;
focal_class.type: Map<String, PlaceholderResolver<?>>
focal_class.var_name: placeholderResolvers
focal_class.file: model/placeholders/src/main/java/org/eclipse/ditto/model/placeholders/ImmutableExpressionResolver.java
focal_class.identifier: ImmutableExpressionResolver
focal_class.interfaces: implements ExpressionResolver
focal_class.class_method_signature: ImmutableExpressionResolver.ImmutableExpressionResolver(final List<PlaceholderResolver<?>> placeholderResolvers)
focal_class.full_signature:   ImmutableExpressionResolver(final List<PlaceholderResolver<?>> placeholderResolvers)
focal_class.identifier: ImmutableExpressionResolver
focal_class.parameters: (final List<PlaceholderResolver<?>> placeholderResolvers)
focal_class.signature:  ImmutableExpressionResolver(final List<PlaceholderResolver<?>> placeholderResolvers)
focal_class.class_method_signature: ImmutableExpressionResolver.ImmutableExpressionResolver(final List<PlaceholderResolver<?>> placeholderResolvers,
              @Nullable final String stringUsedInPlaceholderValidation)
focal_class.full_signature:   ImmutableExpressionResolver(final List<PlaceholderResolver<?>> placeholderResolvers,
              @Nullable final String stringUsedInPlaceholderValidation)
focal_class.identifier: ImmutableExpressionResolver
focal_class.parameters: (final List<PlaceholderResolver<?>> placeholderResolvers,
              @Nullable final String stringUsedInPlaceholderValidation)
focal_class.signature:  ImmutableExpressionResolver(final List<PlaceholderResolver<?>> placeholderResolvers,
              @Nullable final String stringUsedInPlaceholderValidation)
focal_class.class_method_signature: ImmutableExpressionResolver.resolveAsPipelineElement(final String placeholderExpression)
focal_class.full_signature: @Override public PipelineElement resolveAsPipelineElement(final String placeholderExpression)
focal_class.identifier: resolveAsPipelineElement
focal_class.modifiers: @Override public
focal_class.parameters: (final String placeholderExpression)
focal_class.return: PipelineElement
focal_class.signature: PipelineElement resolveAsPipelineElement(final String placeholderExpression)
focal_class.class_method_signature: ImmutableExpressionResolver.findPlaceholderResolver(
              final String placeholderInPipeline)
focal_class.full_signature: private Optional<Map.Entry<PlaceholderResolver<?>, String>> findPlaceholderResolver(
              final String placeholderInPipeline)
focal_class.identifier: findPlaceholderResolver
focal_class.modifiers: private
focal_class.parameters: (
              final String placeholderInPipeline)
focal_class.return: Optional<Map.Entry<PlaceholderResolver<?>, String>>
focal_class.signature: Optional<Map.Entry<PlaceholderResolver<?>, String>> findPlaceholderResolver(
              final String placeholderInPipeline)
focal_class.class_method_signature: ImmutableExpressionResolver.resolveSinglePlaceholder(final String placeholderInPipeline)
focal_class.full_signature: private PipelineElement resolveSinglePlaceholder(final String placeholderInPipeline)
focal_class.identifier: resolveSinglePlaceholder
focal_class.modifiers: private
focal_class.parameters: (final String placeholderInPipeline)
focal_class.return: PipelineElement
focal_class.signature: PipelineElement resolveSinglePlaceholder(final String placeholderInPipeline)
focal_class.class_method_signature: ImmutableExpressionResolver.getPipelineStagesExpressions(final String template)
focal_class.full_signature: private List<String> getPipelineStagesExpressions(final String template)
focal_class.identifier: getPipelineStagesExpressions
focal_class.modifiers: private
focal_class.parameters: (final String template)
focal_class.return: List<String>
focal_class.signature: List<String> getPipelineStagesExpressions(final String template)
focal_class.class_method_signature: ImmutableExpressionResolver.getFirstExpressionInPipe(final List<String> pipelineStagesExpressions)
focal_class.full_signature: private String getFirstExpressionInPipe(final List<String> pipelineStagesExpressions)
focal_class.identifier: getFirstExpressionInPipe
focal_class.modifiers: private
focal_class.parameters: (final List<String> pipelineStagesExpressions)
focal_class.return: String
focal_class.signature: String getFirstExpressionInPipe(final List<String> pipelineStagesExpressions)
focal_class.class_method_signature: ImmutableExpressionResolver.getPipelineFromExpressions(final List<String> pipelineStagesExpressions, final int skip)
focal_class.full_signature: private Pipeline getPipelineFromExpressions(final List<String> pipelineStagesExpressions, final int skip)
focal_class.identifier: getPipelineFromExpressions
focal_class.modifiers: private
focal_class.parameters: (final List<String> pipelineStagesExpressions, final int skip)
focal_class.return: Pipeline
focal_class.signature: Pipeline getPipelineFromExpressions(final List<String> pipelineStagesExpressions, final int skip)
focal_class.class_method_signature: ImmutableExpressionResolver.getPlaceholderPrefix(final String placeholder)
focal_class.full_signature: private Optional<String> getPlaceholderPrefix(final String placeholder)
focal_class.identifier: getPlaceholderPrefix
focal_class.modifiers: private
focal_class.parameters: (final String placeholder)
focal_class.return: Optional<String>
focal_class.signature: Optional<String> getPlaceholderPrefix(final String placeholder)
focal_class.class_method_signature: ImmutableExpressionResolver.equals(@Nullable final Object o)
focal_class.full_signature: @Override public boolean equals(@Nullable final Object o)
focal_class.identifier: equals
focal_class.modifiers: @Override public
focal_class.parameters: (@Nullable final Object o)
focal_class.return: boolean
focal_class.signature: boolean equals(@Nullable final Object o)
focal_class.class_method_signature: ImmutableExpressionResolver.hashCode()
focal_class.full_signature: @Override public int hashCode()
focal_class.identifier: hashCode
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int hashCode()
focal_class.class_method_signature: ImmutableExpressionResolver.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_class.class_method_signature: ImmutableExpressionResolver.isFirstPlaceholderFunction(final String firstPlaceholderInPipeline)
focal_class.full_signature: private static boolean isFirstPlaceholderFunction(final String firstPlaceholderInPipeline)
focal_class.identifier: isFirstPlaceholderFunction
focal_class.modifiers: private static
focal_class.parameters: (final String firstPlaceholderInPipeline)
focal_class.return: boolean
focal_class.signature: boolean isFirstPlaceholderFunction(final String firstPlaceholderInPipeline)
focal_method.body: @Override
      public String toString() {
          return getClass().getSimpleName() + " [" +
                  ", placeholderReplacementInValidation=" + placeholderReplacementInValidation +
                  ", placeholderResolvers=" + placeholderResolvers +
                  "]";
      }
focal_method.class_method_signature: ImmutableExpressionResolver.toString()
focal_method.full_signature: @Override public String toString()
focal_method.identifier: toString
focal_method.invocations: getSimpleName getClass
focal_method.modifiers: @Override public
focal_method.parameters: ()
focal_method.return: String
focal_method.signature: String toString()