2013-06-04 1 views
0

.xsd 파일에서 JibX에 의해 자동 생성 된 ObjectClass 클래스가 있습니다. 같은JibX 자동 생성 클래스를 확장하는 클래스의 바인딩 및 바인딩 해제

com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass

이 클래스 바인딩이 클래스가 자신의 패키지에 강등 된 클래스 이름 문제를 방지하고 의도 한대로 안 바인드합니다.

위의 클래스를 확장하는 빈 클래스를 만들고 싶습니다. 그리고 새 클래스를 바인딩하고 원래 ObjectClass 바인딩을 사용하여 올바르게 바인딩을 해제 하시겠습니까? 또는이 새 확장 프로그램에 대해 고유 한 바인딩을 만들어야합니까?

새로운 클래스는 이러한 의도는 고유 한 이름을 제공하여 타사 개발자를위한 이러한 개체 쉽게/덜 번거 로움을 캐스팅하는 것입니다이

public class deviceGetCommandsResponse extends 
com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass 
{ 
    /// This is empty 
} 

비슷합니다.

그래서 대신

(com.CompanyName.ProductName.SDK.Device.GetCommandsResponse.ObjectClass) SomeReturnFromAMethod 

그들은

(deviceGetCommandsResponse) SomeReturnFromAMethod; 

를 사용하고 모두 같은 기능을 할 수 있습니다.

더 넓은 의미에서 JibX 생성 클래스 용 어댑터 패턴을 만드는 방법은 무엇입니까?

답변

0

귀하의 질문에 대한 대답은 예입니다. JiBX는 확장 클래스에서 정상적으로 작동합니다. 이 작업을 수행하기 전에

, 나는 이러한 옵션을 고려할 것입니다 :

는 첫째, 기본 패키지 이름은 네임 스페이스 URL 위치와 기본 클래스 이름 대부분의 바인딩을위한 탁월한 선택입니다 최상위 요소이다.

예를 들어, 내 스키마 정의의 인 경우 :

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.jibx.org/sampleschema/person" elementFormDefault="qualified" targetNamespace="http://www.jibx.org/sampleschema/person"> 
<xs:element name="person"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="firstName" type="xs:string"/> 
<xs:element name="lastName" type="xs:string"/> 
</xs:sequence> 
</xs:complexType> 
</xs:element> 
</xs:schema> 

생성 된 클래스는 다음과 같습니다

Person person = new Person(); 
person.setFirstName("Don"); 

이 꽤 논리적이고 :

package org.jibx.sampleschema.person; 
public class Person 
{ 
    private String firstName; 
    private String lastName; 
    ... 

코드는 읽을 것 꽤 깨끗합니다. 특히 공개 스키마 정의를 사용하는 경우 전역 적으로 고유 한 클래스 이름을 갖는 것이 매우 유용합니다. 바인딩을 공개 소스로 해제하면 동일한 스키마를 사용하는 다른 사용자가 시간을 절약 할 수 있습니다.

기본값을 사용할 수없는 경우 JiBX 구성을 설정하면 패키지 및/또는 클래스 이름을 쉽게 변경할 수 있습니다.

도움이 되었기를 바랍니다.

Don Corley
JiBX Contributor