검색

47.5. 인수 이름 하위

download PDF

47.5.1. 개요

API 구성 요소 프레임워크를 사용하려면 각 프록시 클래스(Java API 클래스) 내에서 URI 옵션 이름이 고유 해야 합니다. 그러나 메서드 인수 이름에 항상 해당하는 것은 아닙니다. 예를 들어 API 클래스에서 다음 Java 메서드를 고려하십시오.

public void doSomething(int id, String name);
public void doSomethingElse(int id, String name);

Maven 프로젝트를 빌드할 때 camel-api-component-maven-pluginProxyClass 클래스의 모든 인수에 대한 getter 및 setter 메서드를 포함하는 구성 클래스인 ProxyClass EndpointConfiguration 을 생성합니다. 예를 들어 이전 메서드에서 플러그인에서 구성 클래스에서 다음 getter 및 setter 메서드를 생성합니다.

public int  getId();
public void setId(int id);
public String getName();
public void   setName(String name);

그러나 다음 예와 같이 id 인수가 다른 유형으로 여러 번 표시되는 경우 발생하는 작업은 다음과 같습니다.

public void doSomething(int id, String name);
public void doSomethingElse(int id, String name);
public String lookupByID(String id);

이 경우 int 를 반환하는 getId 메서드와 동일한 범위에서 문자열 을 반환하는 getId 메서드를 정의할 수 없기 때문에 코드 생성이 실패합니다. 이 문제에 대한 해결 방법은 인수 이름 대체를 사용하여 인수 이름 매핑을 URI 옵션 이름에 사용자 지정하는 것입니다.

47.5.2. 구문

substitutions 요소는 다음과 같이 하나 이상의 대체 하위 요소로 정의할 수 있습니다.

<substitutions>
  <substitution>
    <method>MethodPattern</method>
    <argName>ArgumentNamePattern</argName>
    <argType>TypeNamePattern</argType>
    <replacement>SubstituteArgName</replacement>
    <replaceWithType>[true|false]</replaceWithType>
  </substitution>
  ...
</substitutions>

여기서 argType 요소와 replaceWithType 요소는 선택 사항이며 생략할 수 있습니다.

47.5.3. 범위

다음 추출에 표시된 것처럼 대체 요소는 선택적으로 apis 요소의 자식으로 및/또는 api 요소의 자식으로 표시될 수 있습니다.

<configuration>
  <apis>
    <api>
      <apiName>...</apiName>
      ...
      <substitutions>...</substitutions>
    </api>
    <substitutions>...</substitutions>
    ...
  </apis>
</configuration>

다음 범위에서 substitutions 요소를 정의할 수 있습니다.

  • api 요소의 자식으로, 대체api 요소에서 지정한 API 클래스에만 적용됩니다.
  • apis 요소의 자식으로, 대체 는 기본적으로 모든 API 클래스에 적용되지만 api 수준에서 재정의할 수 있습니다.

47.5.4. 하위 요소

대체 요소는 다음 하위 요소로 정의할 수 있습니다.

method
Java API의 메서드 이름과 일치하도록 정규식(java.util.regex 구문)을 지정합니다.
argName
일치된 메서드의 인수 이름과 일치하도록 정규식(java.util.regex 구문)을 지정합니다. 여기서 패턴은 일반적으로 캡처 그룹을 포함합니다.
argType
(선택 사항) 인수 유형과 일치하도록 정규식(java.util.regex 구문)을 지정합니다. replaceWithType 옵션을 true 로 설정하면 일반적으로 이 정규식에서 캡처 그룹을 사용합니다.
교체
메서드 패턴의 특정 일치 항목인 argName 패턴 및 (선택 옵션으로) argType 패턴의 경우 replacement 요소는 대체 인수 이름(URI에서 사용)을 정의합니다. 대체 텍스트는 argName 정규식 패턴에서 캡처된 문자열을 사용하여 (구문, $ 1,2 달러,$3 구문을 사용하여 각각 첫 번째, 두 번째 또는 세 번째 캡처 그룹을 삽입함)을 사용하여 구성할 수 있습니다. 또는 replaceWithType 옵션을 true 로 설정하면 argType 정규식 패턴에서 캡처된 문자열을 사용하여 대체 텍스트를 구성할 수 있습니다.
replaceWithType
true 에서는 argType 정규식에서 캡처된 문자열을 사용하여 대체 텍스트가 구성되도록 지정합니다. 기본값은 false입니다.

47.5.5. 예제

다음 대체 예제에서는 접미사 Param 을 인수 이름에 추가하여 java.lang.String 유형의 모든 인수를 수정합니다.

<substitutions>
  <substitution>
    <method>^.+$</method>
    <argName>^.+$</argName>
    <argType>java.lang.String</argType>
    <replacement>$1Param</replacement>
    <replaceWithType>false</replaceWithType>
  </substitution>
</substitutions>

예를 들어 다음 메서드 시그니처가 제공됩니다.

public String greetUs(String name1, String name2);

이 메서드의 인수는 엔드포인트 URI에 있는 options, name1Paramname2Param 을 통해 지정됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.