Мне иногда нужно отправить список примитивов через веб-службу, например, в качестве параметров для запуска хранимой процедуры. В Java в основном у меня есть List. Это не работает с CXF. Я закончил работу с List, где SimpleDataItem - это вложенный код. Это хорошая идея, или есть ли лучшие апробации?Обертывание примитивов для CXF
Я в основном выполняет функцию, что я хотел бы выглядеть следующим образом:
ResultSet executeStoredProc(String procName, Object... args) throws SQLException;
Прямо сейчас SimpleDataItem выглядит следующим образом:
public class SimpleDataItem {
private String s;
private Long l;
private Integer i;
private BigDecimal d;
private Boolean b;
private Long t;
private byte[] ba;
public SimpleDataItem() {
}
public SimpleDataItem(Object o) {
doSetObject(o);
}
public void doSetObject(Object o) {
if (o==null) {
return;
}
if (o instanceof String) {
s=(String)o;
return;
}
if (o instanceof Long) {
l=(Long)o;
return;
}
if (o instanceof Integer) {
i=(Integer)o;
return;
}
if (o instanceof BigDecimal) {
d=(BigDecimal)o;
return ;
}
if (o instanceof Boolean) {
b=(Boolean)o;
return ;
}
if (o instanceof Timestamp) {
t=((Timestamp)o).getTime();
return;
}
if (o instanceof byte[]) {
ba=(byte[])o;
}
}
public Object doGetObject() {
if (s!=null) {
return s;
}
if (l!=null) {
return l;
}
if (i!=null) {
return i;
}
if (d!=null) {
return d;
}
if (b!=null) {
return b;
}
if (t!=null) {
return new Timestamp(t);
}
if (ba!=null) {
return ba;
}
return null;
}
/**
* @return the ba
*/
public byte[] getBa() {
return ba;
}
/**
* @param ba the ba to set
*/
public void setBa(byte[] ba) {
this.ba = ba;
}
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
public Long getL() {
return l;
}
public void setL(Long l) {
this.l = l;
}
public Integer getI() {
return i;
}
public void setI(Integer i) {
this.i = i;
}
public BigDecimal getD() {
return d;
}
public void setD(BigDecimal d) {
this.d = d;
}
public Boolean getB() {
return b;
}
public void setB(Boolean b) {
this.b = b;
}
public Long getT() {
return t;
}
public void setT(Long t) {
this.t = t;
}
public String toString() {
Object o=doGetObject();
if (o!=null) {
return o.toString();
}
return null;
}
}
Является ли это хорошая идея? Есть ли лучшие апробации?
Возможный дубликат [JAXB - Unmarshalling полиморфные объекты] (http://stackoverflow.com/questions/5491982/jaxb-unmarshalling-polymorphic-objects) – bmargulies
@AndresOlarte: Возможно, вам лучше начать с того, что у вас есть в качестве входных данных и какова ваша цель. Сообщество сообщит вам об этом решении. –