2014-03-26 1 views
1

저는 Thrift의 초보자이며 Thrift 생성기 파일 작성에 도움을 주실 것입니다. 나는 다양한 언어로 많은 클라이언트와 자바 서버를 사용하고 싶다. 나는이 파일을 자동 생성하기 위해 Thrift를 사용하고 있습니다. 나는 패키지 JAVAOBJECT에 자바 파일의 별도의 세트를 가지고 javaObjectMethod이 패키지의 방법 중 하나입니다Thrift : 목록 정의에 외부 자바 클래스 사용

namespace php example 
namespace py example 
namespace csharp example 
namespace cpp example 
namespace perl example 
namespace d example 
namespace java javaobjectmethods 

struct ExternalLibraryItem { 
    1: required string name 
} 

service ExampleService { 
    list<ExternalLibraryItem> javaObjectMethod(1:i32 count) 
} 

:

다음은 내 드리프트 파일입니다. 그러나이 메서드는 외부 라이브러리에 의해 인스턴스화 된 개체를 반환합니다. 이 파일을 쓰지 않고 Thrift 파일에 쓰려면 어떻게해야합니까?

struct ExternalLibraryItem { 
    1: required string name 
} 

현재이 줄이없는 서버 파일을 생성하지 못하게합니다.

package javaobjectmethods; 

import externalLibrary.ExternalLibaryItem; 
import externalLibrary.ExternalLibraryClass; 

public class javaObject { 
    private String file; 

    public javaObject(String file) { 
     this.file = file; 
    } 

    public List<ExternalLibraryItem> javaObjectMethod(int count) { 
     // this method returns List<ExternalLibraryItem> 
     return ExternalLibraryClass.doThis(count, this.file); 
    } 
} 

답변

0

짧은 답변 :

여기 내 자바 파일의 당신은 할 수 없습니다.

모두 스 리프트 structs은 생성 된 코드가 될 것으로 예상됩니다. 일부 언어의 경우 부분적인 클래스가 만들어지며 (예 : C#) 이러한 상황에서 도움을 줄 수 있지만 모든 언어에 도움이되지는 않습니다. 또한 어떤 경우에는 (C++) 기본 클래스를 어느 정도 사용자 정의 할 수 있습니다. 자바를 들어, 클래스의

struct Foo { 
    1: i32 bar 
} 

결과는 주변의 모든 코드와 구조를 필요로하고 기대된다

public class foo implements org.apache.thrift.TBase<foo, foo._Fields>, 
          java.io.Serializable, 
          Cloneable, 
          Comparable<foo> 

로 시작.

특별한 경우에 대한 가능한 해결책 중 하나는 내부 클래스를 Thrift 클래스로 변환하는 것입니다.

물론이 방법을 사용하는 것이 더 좋은 방법이라면 - 우리는 고품질의 패치를받을 수 있습니다.

+0

감사합니다. 이 문제를 해결하려면 해결 방법을 구현하지 않고 가능한지 확인하고 싶습니다. –

관련 문제