1 17 package org.apache.ws.jaxme.xs.xml.impl; 18 19 import java.util.ArrayList ; 20 import java.util.List ; 21 22 import org.apache.ws.jaxme.xs.xml.*; 23 24 25 43 public class XsTKeybaseImpl extends XsTAnnotatedImpl implements XsTKeybase { 44 private XsESelector selector; 45 private List fields = new ArrayList (); 46 private XsNCName name; 47 48 protected XsTKeybaseImpl(XsObject pParent) { 49 super(pParent); 50 } 51 52 public XsESelector createSelector() { 53 if (selector != null) { 54 throw new IllegalStateException ("Multiple 'selector' child elements are forbidden."); 55 } 56 if (fields.size() > 0) { 57 throw new IllegalStateException ("The 'selector' child element must precede the 'field' child elements."); 58 } 59 selector = getObjectFactory().newXsESelector(this); 60 return selector; 61 } 62 63 public XsESelector getSelector() { 64 return selector; 65 } 66 67 public XsEField createField() { 68 if (selector == null) { 69 throw new NullPointerException ("This 'field' child element must be preceded by a 'selector' child element."); 70 } 71 XsEField field = getObjectFactory().newXsEField(this); 72 fields.add(field); 73 return field; 74 } 75 76 public XsEField[] getFields() { 77 return (XsEField[]) fields.toArray(new XsEField[fields.size()]); 78 } 79 80 public void setName(XsNCName pName) { 81 name = pName; 82 } 83 84 public XsNCName getName() { 85 return name; 86 } 87 88 public void validate() { 89 if (name == null) { 90 throw new NullPointerException ("Missing attribute: 'name'"); 91 } 92 if (selector == null) { 93 throw new NullPointerException ("Missing child element: 'selector'"); 94 } 95 if (fields.size() == 0) { 96 throw new NullPointerException ("Missing child element: 'field'"); 97 } 98 } 99 } 100 | Popular Tags |