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 testUnsuccessfulSinglePlaceholderResolution() {
          assertThat(underTest.resolveAsPipelineElement("header:unknown"))
                  .isEmpty();
          assertThat(underTest.resolveAsPipelineElement("fn:substring-before('')"))
                  .isEmpty();
      }
test_case.class_method_signature: ImmutableExpressionResolverTest.testUnsuccessfulSinglePlaceholderResolution()
test_case.full_signature: @Test public void testUnsuccessfulSinglePlaceholderResolution()
test_case.identifier: testUnsuccessfulSinglePlaceholderResolution
test_case.invocations: isEmpty assertThat resolveAsPipelineElement isEmpty assertThat resolveAsPipelineElement
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testUnsuccessfulSinglePlaceholderResolution()
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 PipelineElement resolveAsPipelineElement(final String placeholderExpression) {
          final List<String> pipelineStagesExpressions = getPipelineStagesExpressions(placeholderExpression);
          final String firstPlaceholderInPipe = getFirstExpressionInPipe(pipelineStagesExpressions);
          if (isFirstPlaceholderFunction(firstPlaceholderInPipe)) {
              return getPipelineFromExpressions(pipelineStagesExpressions, 0).execute(PipelineElement.unresolved(), this);
          } else {
              final PipelineElement pipelineInput = resolveSinglePlaceholder(firstPlaceholderInPipe);
              return getPipelineFromExpressions(pipelineStagesExpressions, 1).execute(pipelineInput, this);
          }
      }
focal_method.class_method_signature: ImmutableExpressionResolver.resolveAsPipelineElement(final String placeholderExpression)
focal_method.full_signature: @Override public PipelineElement resolveAsPipelineElement(final String placeholderExpression)
focal_method.identifier: resolveAsPipelineElement
focal_method.invocations: getPipelineStagesExpressions getFirstExpressionInPipe isFirstPlaceholderFunction execute getPipelineFromExpressions unresolved resolveSinglePlaceholder execute getPipelineFromExpressions
focal_method.modifiers: @Override public
focal_method.parameters: (final String placeholderExpression)
focal_method.return: PipelineElement
focal_method.signature: PipelineElement resolveAsPipelineElement(final String placeholderExpression)