1. /*
  2. * The Apache Software License, Version 1.1
  3. *
  4. *
  5. * Copyright (c) 2001, 2002 The Apache Software Foundation.
  6. * All rights reserved.
  7. *
  8. * Redistribution and use in source and binary forms, with or without
  9. * modification, are permitted provided that the following conditions
  10. * are met:
  11. *
  12. * 1. Redistributions of source code must retain the above copyright
  13. * notice, this list of conditions and the following disclaimer.
  14. *
  15. * 2. Redistributions in binary form must reproduce the above copyright
  16. * notice, this list of conditions and the following disclaimer in
  17. * the documentation and/or other materials provided with the
  18. * distribution.
  19. *
  20. * 3. The end-user documentation included with the redistribution,
  21. * if any, must include the following acknowledgment:
  22. * "This product includes software developed by the
  23. * Apache Software Foundation (http://www.apache.org/)."
  24. * Alternately, this acknowledgment may appear in the software itself,
  25. * if and wherever such third-party acknowledgments normally appear.
  26. *
  27. * 4. The names "Xerces" and "Apache Software Foundation" must
  28. * not be used to endorse or promote products derived from this
  29. * software without prior written permission. For written
  30. * permission, please contact apache@apache.org.
  31. *
  32. * 5. Products derived from this software may not be called "Apache",
  33. * nor may "Apache" appear in their name, without prior written
  34. * permission of the Apache Software Foundation.
  35. *
  36. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  37. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  38. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  39. * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  40. * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  41. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  42. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  43. * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  44. * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  45. * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  46. * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  47. * SUCH DAMAGE.
  48. * ====================================================================
  49. *
  50. * This software consists of voluntary contributions made by many
  51. * individuals on behalf of the Apache Software Foundation and was
  52. * originally based on software copyright (c) 1999, International
  53. * Business Machines, Inc., http://www.apache.org. For more
  54. * information on the Apache Software Foundation, please see
  55. * <http://www.apache.org/>.
  56. */
  57. package com.sun.org.apache.xerces.internal.dom;
  58. import java.util.Vector;
  59. import org.w3c.dom.DOMException;
  60. import com.sun.org.apache.xerces.internal.dom3.as.*;
  61. import com.sun.org.apache.xerces.internal.impl.xs.SchemaGrammar;
  62. /**
  63. * To begin with, an abstract schema is a generic structure that could
  64. * contain both internal and external subsets. An <code>ASModel</code> is an
  65. * abstract object that could map to a DTD , an XML Schema , a database
  66. * schema, etc. An <code>ASModel</code> could represent either an internal
  67. * or an external subset; hence an abstract schema could be composed of an
  68. * <code>ASModel</code> representing the internal subset and an
  69. * <code>ASModel</code> representing the external subset. Note that the
  70. * <code>ASModel</code> representing the external subset could consult the
  71. * <code>ASModel</code> representing the internal subset. Furthermore, the
  72. * <code>ASModel</code> representing the internal subset could be set to
  73. * null by the <code>setInternalAS</code> method as a mechanism for
  74. * "removal". In addition, only one <code>ASModel</code> representing the
  75. * external subset can be specified as "active" and it is possible that none
  76. * are "active". Finally, the <code>ASModel</code> contains the factory
  77. * methods needed to create a various types of ASObjects like
  78. * <code>ASElementDeclaration</code>, <code>ASAttributeDeclaration</code>,
  79. * etc.
  80. * <p>See also the <a href='http://www.w3.org/TR/2001/WD-DOM-Level-3-ASLS-20011025'>
  81. * Document Object Model (DOM) Level 3 Abstract Schemas and Load and Save Specification</a>.
  82. * @deprecated
  83. * @author Pavani Mukthipudi
  84. * @author Neil Graham
  85. * @version $Id: ASModelImpl.java,v 1.5 2003/03/24 20:27:12 elena Exp $
  86. */
  87. public class ASModelImpl implements ASModel {
  88. //
  89. // Data
  90. //
  91. boolean fNamespaceAware = true;
  92. // conceptually, an ASModel may contain grammar information and/or
  93. // other ASModels. These two fields divide that function.
  94. protected Vector fASModels;
  95. protected SchemaGrammar fGrammar = null;
  96. //
  97. // Constructors
  98. //
  99. public ASModelImpl() {
  100. fASModels = new Vector();
  101. }
  102. public ASModelImpl(boolean isNamespaceAware) {
  103. fASModels = new Vector();
  104. fNamespaceAware = isNamespaceAware;
  105. }
  106. //
  107. // ASObject methods
  108. //
  109. /**
  110. * A code representing the underlying object as defined above.
  111. */
  112. public short getAsNodeType() {
  113. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  114. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  115. }
  116. /**
  117. * The <code>ASModel</code> object associated with this
  118. * <code>ASObject</code>. For a node of type <code>AS_MODEL</code>, this
  119. * is <code>null</code>.
  120. */
  121. public ASModel getOwnerASModel() {
  122. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  123. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  124. }
  125. /**
  126. * The <code>ASModel</code> object associated with this
  127. * <code>ASObject</code>. For a node of type <code>AS_MODEL</code>, this
  128. * is <code>null</code>.
  129. */
  130. public void setOwnerASModel(ASModel ownerASModel) {
  131. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  132. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  133. }
  134. /**
  135. * The <code>name</code> of this <code>ASObject</code> depending on the
  136. * <code>ASObject</code> type.
  137. */
  138. public String getNodeName() {
  139. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  140. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  141. }
  142. /**
  143. * The <code>name</code> of this <code>ASObject</code> depending on the
  144. * <code>ASObject</code> type.
  145. */
  146. public void setNodeName(String nodeName) {
  147. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  148. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  149. }
  150. /**
  151. * The namespace prefix of this node, or <code>null</code> if it is
  152. * unspecified.
  153. */
  154. public String getPrefix() {
  155. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  156. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  157. }
  158. /**
  159. * The namespace prefix of this node, or <code>null</code> if it is
  160. * unspecified.
  161. */
  162. public void setPrefix(String prefix) {
  163. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  164. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  165. }
  166. /**
  167. * Returns the local part of the qualified name of this
  168. * <code>ASObject</code>.
  169. */
  170. public String getLocalName() {
  171. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  172. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  173. }
  174. /**
  175. * Returns the local part of the qualified name of this
  176. * <code>ASObject</code>.
  177. */
  178. public void setLocalName(String localName) {
  179. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  180. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  181. }
  182. /**
  183. * The namespace URI of this node, or <code>null</code> if it is
  184. * unspecified. defines how a namespace URI is attached to schema
  185. * components.
  186. */
  187. public String getNamespaceURI() {
  188. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  189. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  190. }
  191. /**
  192. * The namespace URI of this node, or <code>null</code> if it is
  193. * unspecified. defines how a namespace URI is attached to schema
  194. * components.
  195. */
  196. public void setNamespaceURI(String namespaceURI) {
  197. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  198. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  199. }
  200. /**
  201. * Creates a copy of this <code>ASObject</code>. See text for
  202. * <code>cloneNode</code> off of <code>Node</code> but substitute AS
  203. * functionality.
  204. * @param deep Setting the <code>deep</code> flag on, causes the whole
  205. * subtree to be duplicated. Setting it to <code>false</code> only
  206. * duplicates its immediate child nodes.
  207. * @return Cloned <code>ASObject</code>.
  208. */
  209. public ASObject cloneASObject(boolean deep) {
  210. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  211. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  212. }
  213. //
  214. // ASModel methods
  215. //
  216. /**
  217. * <code>true</code> if this <code>ASModel</code> defines the document
  218. * structure in terms of namespaces and local names ; <code>false</code>
  219. * if the document structure is defined only in terms of
  220. * <code>QNames</code>.
  221. */
  222. public boolean getIsNamespaceAware() {
  223. return fNamespaceAware;
  224. }
  225. /**
  226. * 0 if used internally, 1 if used externally, 2 if not all. An exception
  227. * will be raised if it is incompatibly shared or in use as an internal
  228. * subset.
  229. */
  230. public short getUsageLocation() {
  231. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  232. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  233. }
  234. /**
  235. * The URI reference.
  236. */
  237. public String getAsLocation() {
  238. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  239. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  240. }
  241. /**
  242. * The URI reference.
  243. */
  244. public void setAsLocation(String asLocation) {
  245. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  246. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  247. }
  248. /**
  249. * The hint to locating an ASModel.
  250. */
  251. public String getAsHint() {
  252. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  253. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  254. }
  255. /**
  256. * The hint to locating an ASModel.
  257. */
  258. public void setAsHint(String asHint) {
  259. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  260. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  261. }
  262. /**
  263. * If <code>usage</code> is EXTERNAL_SUBSET or NOT_USED, and the
  264. * <code>ASModel</code> is simply a container of other ASModels.
  265. */
  266. public boolean getContainer() {
  267. return (fGrammar != null);
  268. }
  269. /**
  270. * Instead of returning an all-in-one <code>ASObject</code> with
  271. * <code>ASModel</code> methods, have discernible top-level/"global"
  272. * element declarations. If one attempts to add, set, or remove a node
  273. * type other than the intended one, a hierarchy exception (or
  274. * equivalent is thrown).
  275. */
  276. public ASNamedObjectMap getElementDeclarations() {
  277. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  278. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  279. }
  280. /**
  281. * Instead of returning an all-in-one <code>ASObject</code> with
  282. * <code>ASModel</code> methods, have discernible top-level/"global"
  283. * attribute declarations. If one attempts to add, set, or remove a node
  284. * type other than the intended one, a hierarchy exception (or
  285. * equivalent is thrown).
  286. */
  287. public ASNamedObjectMap getAttributeDeclarations() {
  288. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  289. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  290. }
  291. /**
  292. * Instead of returning an all-in-one <code>ASObject</code> with
  293. * <code>ASModel</code> methods, have discernible top-level/"global"
  294. * notation declarations. If one attempts to add, set, or remove a node
  295. * type other than the intended one, a hierarchy exception (or
  296. * equivalent is thrown).
  297. */
  298. public ASNamedObjectMap getNotationDeclarations() {
  299. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  300. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  301. }
  302. /**
  303. * Instead of returning an all-in-one <code>ASObject</code> with
  304. * <code>ASModel</code> methods, have discernible top-level/"global"
  305. * entity declarations. If one attempts to add, set, or remove a node
  306. * type other than the intended one, a hierarchy exception (or
  307. * equivalent is thrown).
  308. */
  309. public ASNamedObjectMap getEntityDeclarations() {
  310. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  311. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  312. }
  313. /**
  314. * Instead of returning an all-in-one <code>ASObject</code> with
  315. * <code>ASModel</code> methods, have discernible top-level/"global
  316. * content model declarations. If one attempts to add, set, or remove a
  317. * node type other than the intended one, a hierarchy exception (or
  318. * equivalent is thrown).
  319. */
  320. public ASNamedObjectMap getContentModelDeclarations() {
  321. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  322. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  323. }
  324. /**
  325. * This method will allow the nesting or "importation" of ASModels.
  326. * @param abstractSchema ASModel to be set. Subsequent calls will nest
  327. * the ASModels within the specified <code>ownerASModel</code>.
  328. */
  329. public void addASModel(ASModel abstractSchema) {
  330. fASModels.addElement(abstractSchema);
  331. }
  332. /**
  333. * To retrieve a list of nested ASModels without reference to names.
  334. * @return A list of ASModels.
  335. */
  336. public ASObjectList getASModels() {
  337. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  338. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  339. }
  340. /**
  341. * Removes only the specified <code>ASModel</code> from the list of
  342. * <code>ASModel</code>s.
  343. * @param as AS to be removed.
  344. */
  345. public void removeAS(ASModel as) {
  346. fASModels.removeElement(as);
  347. }
  348. /**
  349. * Determines if an <code>ASModel</code> itself is valid, i.e., confirming
  350. * that it's well-formed and valid per its own formal grammar.
  351. * @return <code>true</code> if the <code>ASModel</code> is valid,
  352. * <code>false</code> otherwise.
  353. */
  354. public boolean validate() {
  355. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  356. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  357. }
  358. /**
  359. * Imports <code>ASObject</code> into ASModel.
  360. * @param asobject <code>ASObject</code> to be imported.
  361. */
  362. public void importASObject(ASObject asobject) {
  363. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  364. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  365. }
  366. /**
  367. * Inserts <code>ASObject</code> into ASModel.
  368. * @param asobject <code>ASObject</code> to be inserted.
  369. */
  370. public void insertASObject(ASObject asobject) {
  371. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  372. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  373. }
  374. /**
  375. * Creates an element declaration for the element type specified.
  376. * @param namespaceURI The <code>namespace URI</code> of the element type
  377. * being declared.
  378. * @param name The name of the element. The format of the name could be
  379. * an NCName as defined by XML Namespaces or a Name as defined by XML
  380. * 1.0; it's ASModel-dependent.
  381. * @return A new <code>ASElementDeclaration</code> object with
  382. * <code>name</code> attribute set to <code>tagname</code> and
  383. * <code>namespaceURI</code> set to <code>systemId</code>. Other
  384. * attributes of the element declaration are set through
  385. * <code>ASElementDeclaration</code> interface methods.
  386. * @exception DOMException
  387. * INVALID_CHARACTER_ERR: Raised if the specified name contains an
  388. * illegal character.
  389. */
  390. public ASElementDeclaration createASElementDeclaration(String namespaceURI,
  391. String name)
  392. throws DOMException {
  393. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  394. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  395. }
  396. /**
  397. * Creates an attribute declaration.
  398. * @param namespaceURI The namespace URI of the attribute being declared.
  399. * @param name The name of the attribute. The format of the name could be
  400. * an NCName as defined by XML Namespaces or a Name as defined by XML
  401. * 1.0; it's ASModel-dependent.
  402. * @return A new <code>ASAttributeDeclaration</code> object with
  403. * appropriate attributes set by input parameters.
  404. * @exception DOMException
  405. * INVALID_CHARACTER_ERR: Raised if the input <code>name</code>
  406. * parameter contains an illegal character.
  407. */
  408. public ASAttributeDeclaration createASAttributeDeclaration(String namespaceURI,
  409. String name)
  410. throws DOMException {
  411. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  412. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  413. }
  414. /**
  415. * Creates a new notation declaration.
  416. * @param namespaceURI The namespace URI of the notation being declared.
  417. * @param name The name of the notation. The format of the name could be
  418. * an NCName as defined by XML Namespaces or a Name as defined by XML
  419. * 1.0; it's ASModel-dependent.
  420. * @param systemId The system identifier for the notation declaration.
  421. * @param publicId The public identifier for the notation declaration.
  422. * @return A new <code>ASNotationDeclaration</code> object with
  423. * <code>notationName</code> attribute set to <code>name</code> and
  424. * <code>publicId</code> and <code>systemId</code> set to the
  425. * corresponding fields.
  426. * @exception DOMException
  427. * INVALID_CHARACTER_ERR: Raised if the specified name contains an
  428. * illegal character.
  429. */
  430. public ASNotationDeclaration createASNotationDeclaration(String namespaceURI, String name,
  431. String systemId, String publicId)
  432. throws DOMException {
  433. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  434. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  435. }
  436. /**
  437. * Creates an ASEntityDeclaration.
  438. * @param name The name of the entity being declared.
  439. * @return A new <code>ASEntityDeclaration</code> object with
  440. * <code>entityName</code> attribute set to name.
  441. * @exception DOMException
  442. * INVALID_CHARACTER_ERR: Raised if the specified name contains an
  443. * illegal character.
  444. */
  445. public ASEntityDeclaration createASEntityDeclaration(String name)
  446. throws DOMException {
  447. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  448. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  449. }
  450. /**
  451. * Creates an object which describes part of an
  452. * <code>ASElementDeclaration</code>'s content model.
  453. * @param minOccurs The minimum occurrence for the subModels of this
  454. * <code>ASContentModel</code>.
  455. * @param maxOccurs The maximum occurrence for the subModels of this
  456. * <code>ASContentModel</code>.
  457. * @param operator operator of type <code>AS_CHOICE</code>,
  458. * <code>AS_SEQUENCE</code>, <code>AS_ALL</code> or
  459. * <code>AS_NONE</code>.
  460. * @return A new <code>ASContentModel</code> object.
  461. * @exception DOMASException
  462. * A DOMASException, e.g., <code>minOccurs > maxOccurs</code>.
  463. */
  464. public ASContentModel createASContentModel(int minOccurs, int maxOccurs,
  465. short operator) throws DOMASException {
  466. String msg = DOMMessageFormatter.formatMessage(DOMMessageFormatter.DOM_DOMAIN, "NOT_SUPPORTED_ERR", null);
  467. throw new DOMException(DOMException.NOT_SUPPORTED_ERR, msg);
  468. }
  469. // convenience methods
  470. public SchemaGrammar getGrammar() {
  471. return fGrammar;
  472. }
  473. public void setGrammar(SchemaGrammar grammar) {
  474. fGrammar = grammar;
  475. }
  476. public Vector getInternalASModels() {
  477. return fASModels;
  478. }
  479. }