Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java?rev=1711942&r1=1711941&r2=1711942&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java
 Mon Nov  2 12:19:46 2015
@@ -19,10 +19,14 @@
 
 package org.apache.uima.jcas.cas;
 
+import org.apache.uima.cas.CAS;
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.TypeImpl;
+import org.apache.uima.cas.impl.TypeSystemImpl;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.JCasRegistry;
 
-public class NonEmptyStringList extends StringList {
+public class NonEmptyStringList extends StringList implements NonEmptyList {
 
   public final static int typeIndexID = 
JCasRegistry.register(NonEmptyStringList.class);
 
@@ -32,56 +36,62 @@ public class NonEmptyStringList extends
     return typeIndexID;
   }
 
-  // Never called. Disable default constructor
-  protected NonEmptyStringList() {
+  private final static int head_featCode;
+  private final static int tail_featCode;
+  
+  static {
+    TypeSystemImpl tsi = TypeSystemImpl.staticTsi;
+    TypeImpl listType = tsi.getType(CAS.TYPE_NAME_NON_EMPTY_STRING_LIST);
+    
+    head_featCode = 
listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_HEAD).getCode();
+    tail_featCode = 
listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_TAIL).getCode();
   }
 
- /* Internal - Constructor used by generator */
-  public NonEmptyStringList(int addr, TOP_Type type) {
-    super(addr, type);
+  /* local data */
+  private String _F_head;
+  private StringList _F_tail;
+  
+  // Never called. Disable default constructor
+  protected NonEmptyStringList() {
   }
 
   public NonEmptyStringList(JCas jcas) {
     super(jcas);
   }
 
-  // *------------------*
+  /**
+   * used by generator
+   * Make a new AnnotationBase
+   * @param c -
+   * @param t -
+   */
+
+  public NonEmptyStringList(TypeImpl t, CASImpl c) {
+    super(t, c);
+  }
+  
+// *------------------*
   // * Feature: head
   /* getter for head * */
-  public String getHead() {
-    if (NonEmptyStringList_Type.featOkTst
-            && ((NonEmptyStringList_Type) jcasType).casFeat_head == null)
-      this.jcasType.jcas.throwFeatMissing("head", 
"uima.cas.NonEmptyStringList");
-    return jcasType.ll_cas.ll_getStringValue(addr,
-            ((NonEmptyStringList_Type) jcasType).casFeatCode_head);
-  }
+  public String getHead() { return _F_head; }
 
   /* setter for head * */
   public void setHead(String v) {
-    if (NonEmptyStringList_Type.featOkTst
-            && ((NonEmptyStringList_Type) jcasType).casFeat_head == null)
-      this.jcasType.jcas.throwFeatMissing("head", 
"uima.cas.NonEmptyStringList");
-    jcasType.ll_cas.ll_setStringValue(addr, ((NonEmptyStringList_Type) 
jcasType).casFeatCode_head,
-            v);
+    _F_head = v;  
+    // no corruption check - can't be a key
+    _casView.maybeLogUpdate(this, head_featCode);
   }
 
   // *------------------*
   // * Feature: tail
   /* getter for tail * */
-  public StringList getTail() {
-    if (NonEmptyStringList_Type.featOkTst
-            && ((NonEmptyStringList_Type) jcasType).casFeat_tail == null)
-      this.jcasType.jcas.throwFeatMissing("tail", 
"uima.cas.NonEmptyStringList");
-    return (StringList) 
(jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefValue(addr,
-            ((NonEmptyStringList_Type) jcasType).casFeatCode_tail)));
-  }
+  public StringList getTail() { return _F_tail; }
 
   /* setter for tail * */
-  public void setTail(StringList v) {
-    if (NonEmptyStringList_Type.featOkTst
-            && ((NonEmptyStringList_Type) jcasType).casFeat_tail == null)
-      this.jcasType.jcas.throwFeatMissing("tail", 
"uima.cas.NonEmptyStringList");
-    jcasType.ll_cas.ll_setRefValue(addr, ((NonEmptyStringList_Type) 
jcasType).casFeatCode_tail,
-            jcasType.ll_cas.ll_getFSRef(v));
+  public void setTail(CommonList v) {
+    _F_tail = (StringList) v;
+    // no corruption check - can't be a key
+    _casView.maybeLogUpdate(this, tail_featCode);
   }
+
 }

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
 Mon Nov  2 12:19:46 2015
@@ -20,11 +20,13 @@
 package org.apache.uima.jcas.cas;
 
 import org.apache.uima.cas.ShortArrayFS;
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.TypeImpl;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.JCasRegistry;
 
 /** JCas class model for ShortArray */
-public final class ShortArray extends TOP implements ShortArrayFS {
+public final class ShortArray extends TOP implements CommonPrimitiveArray, 
ShortArrayFS {
   /**
    * Each cover class when loaded sets an index. Used in the JCas typeArray to 
go from the cover
    * class or class instance to the corresponding instance of the _Type class
@@ -43,13 +45,11 @@ public final class ShortArray extends TO
     return typeIndexID;
   }
 
+  private final short[] theArray;
   // never called. Here to disable default constructor
+  @SuppressWarnings("unused")
   private ShortArray() {
-  }
-
- /* Internal - Constructor used by generator */
-  public ShortArray(int addr, TOP_Type type) {
-    super(addr, type);
+    theArray = null;
   }
 
   /**
@@ -58,79 +58,80 @@ public final class ShortArray extends TO
    * @param length The number of elements in the new array
    */
   public ShortArray(JCas jcas, int length) {
-    this(jcas.getLowLevelCas().ll_createShortArray(length), 
jcas.getType(typeIndexID));
+    super(jcas);
+    theArray = new short[length];
+  }
+
+  /**
+   * used by generator
+   * Make a new ShortArray of given size
+   * @param c -
+   * @param t - 
+   * @param length The number of elements in the new array
+   */
+  public ShortArray(TypeImpl t, CASImpl c, int length) {
+    super(t, c);  
+    theArray = new short[length];
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#get(int)
    */
   public short get(int i) {
-    jcasType.casImpl.checkArrayBounds(addr, i);
-    return jcasType.ll_cas.ll_getShortArrayValue(addr, i);
+    return theArray[i];
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#set(int , short)
    */
   public void set(int i, short v) {
-    jcasType.casImpl.checkArrayBounds(addr, i);
-    jcasType.ll_cas.ll_setShortArrayValue(addr, i, v);
+    theArray[i] = v;
+    _casView.maybeLogArrayUpdate(this, null, i);
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#copyFromArray(short[], int, int, 
int)
    */
-  public void copyFromArray(short[] src, int srcOffset, int destOffset, int 
length) {
-    jcasType.casImpl.checkArrayBounds(addr, destOffset, length);
-    for (int i = 0; i < length; i++) {
-      jcasType.ll_cas.ll_setShortArrayValue(addr, i + destOffset, src[i + 
srcOffset]);
-    }
+  public void copyFromArray(short[] src, int srcPos, int destPos, int length) {
+    System.arraycopy(src, srcPos, theArray, destPos, length);
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#copyToArray(int, short[], int, int)
    */
-  public void copyToArray(int srcOffset, short[] dest, int destOffset, int 
length) {
-    jcasType.casImpl.checkArrayBounds(addr, srcOffset, length);
-    for (int i = 0; i < length; i++) {
-      dest[i + destOffset] = jcasType.ll_cas.ll_getShortArrayValue(addr, i + 
srcOffset);
-    }
+  public void copyToArray(int srcPos, short[] dest, int destPos, int length) {
+    System.arraycopy(theArray, srcPos, dest, destPos, length);
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#toArray()
    */
   public short[] toArray() {
-    final int size = size();
-    short[] outArray = new short[size];
-    copyToArray(0, outArray, 0, size);
-    return outArray;
+    return theArray.clone();
   }
 
   /** return the size of the array */
   public int size() {
-    return jcasType.casImpl.ll_getArraySize(addr);
+    return theArray.length;
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#copyToArray(int, String[], int, int)
    */
-  public void copyToArray(int srcOffset, String[] dest, int destOffset, int 
length) {
-    jcasType.casImpl.checkArrayBounds(addr, srcOffset, length);
+  public void copyToArray(int srcPos, String[] dest, int destPos, int length) {
+    _casView.checkArrayBounds(theArray.length, srcPos, length);
     for (int i = 0; i < length; i++) {
-      dest[i + destOffset] = 
Short.toString(jcasType.ll_cas.ll_getShortArrayValue(addr, i
-              + srcOffset));
+      dest[i + destPos] = Short.toString(theArray[i + srcPos]);
     }
   }
 
   /**
    * @see org.apache.uima.cas.ShortArrayFS#copyFromArray(String[], int, int, 
int)
    */
-  public void copyFromArray(String[] src, int srcOffset, int destOffset, int 
length) {
-    jcasType.casImpl.checkArrayBounds(addr, destOffset, length);
+  public void copyFromArray(String[] src, int srcPos, int destPos, int length) 
{
+    _casView.checkArrayBounds(theArray.length, destPos, length);
     for (int i = 0; i < length; i++) {
-      jcasType.ll_cas.ll_setShortArrayValue(addr, i + destOffset, 
Short.parseShort(src[i
-              + srcOffset]));
+      theArray[i + destPos] = Short.parseShort(src[i + srcPos]);
     }
   }
 
@@ -140,4 +141,19 @@ public final class ShortArray extends TO
     copyToArray(0, strArray, 0, size);
     return strArray;
   }
+  
+  // internal use
+  public short[] _getTheArray() {
+    return theArray;
+  }
+  
+  /* (non-Javadoc)
+   * @see 
org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray)
+   */
+  @Override
+  public void copyValuesFrom(CommonArray v) {
+    ShortArray bv = (ShortArray) v;
+    System.arraycopy(bv.theArray,  0,  theArray, 0, theArray.length);
+  }
+
 }

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/Sofa.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/Sofa.java?rev=1711942&r1=1711941&r2=1711942&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/Sofa.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/Sofa.java
 Mon Nov  2 12:19:46 2015
@@ -21,264 +21,223 @@ package org.apache.uima.jcas.cas;
 
 import java.io.InputStream;
 
-import org.apache.uima.cas.CAS;
 import org.apache.uima.cas.CASRuntimeException;
 import org.apache.uima.cas.Feature;
 import org.apache.uima.cas.FeatureStructure;
 import org.apache.uima.cas.SofaFS;
-import org.apache.uima.cas.SofaID;
 import org.apache.uima.cas.impl.CASImpl;
-import org.apache.uima.cas.impl.FeatureImpl;
-import org.apache.uima.jcas.JCas;
+import org.apache.uima.cas.impl.TypeImpl;
 import org.apache.uima.jcas.JCasRegistry;
-import org.apache.uima.jcas.impl.JCasImpl;
 
-/**
- * Updated by JCasGen Fri Apr 29 16:05:04 EDT 2005
- */
 public class Sofa extends TOP implements SofaFS {
-       /**
-   * @generated
-   * @ordered
-   */
+  
        public final static int typeIndexID = JCasRegistry.register(Sofa.class);
 
-       /**
-   * @generated
-   * @ordered
-   */
        public final static int type = typeIndexID;
+  @Override
+  public int getTypeIndexID() {
+    return typeIndexID;
+  }
+  
+  /* local data */
+  
+  private final int _F_sofaNum;
+  private final String _F_sofaID;  // view name or _InitialView
+  private String _F_mimeType;      // may be changed
+  private TOP _F_sofaArray;
+  private String _F_sofaString;
+  private String _F_sofaURI;
+
+  protected Sofa() {
+    _F_sofaNum = 0;
+    _F_sofaID = null;
+    _F_mimeType = null;
+       }
+
+        /**
+   * used by generator, not used
+   * Make a new Sofa
+   * @param c -
+   * @param t -
+   */
+  public Sofa(TypeImpl t, CASImpl c) {
+    super(t, c);
+    _F_sofaNum = 0;
+    _F_sofaID = null; 
+  }
+  
+  public Sofa(TypeImpl t, CASImpl c, int sofaNum, String viewName, String 
mimeType) {
+    super(t, c);
+    _F_sofaNum = sofaNum;
+    _F_sofaID = viewName;
+    _F_mimeType = mimeType;
+  }
 
-       /** @generated */
-       public int getTypeIndexID() {
-               return typeIndexID;
-       }
-
-       /**
-   * Never called. Disable default constructor
-   * 
-   * @generated
-   */
-       protected Sofa() {
-       }
-
-       /**
-   * Internal - constructor used by generator
-   * 
-   * @generated
-   * @param addr the address
-   * @param type the type
-   */
-       public Sofa(int addr, TOP_Type type) {
-               super(addr, type);
-               readObject();
-       }
-
-       /**
-        * 
-        * @param jcas JCas
-        * @param ID the sofa ID
-        * @param mimeType the mime type
-        * 
-   * @deprecated As of v2.0, use {@link JCasImpl#createView(String)} to create 
a view, which will
-   *             also create the Sofa for that view.
-
-        */
-       @Deprecated
-       public Sofa(JCas jcas, SofaID ID, String mimeType) {
-               super(jcas);
-               final CASImpl casImpl = jcasType.casImpl;
-               casImpl.addSofa(casImpl.createFS(this.addr), ID.getSofaID(), 
mimeType);
-    casImpl.getView(this); // needed to make reset work
-       }
-
-       /**
-   * <!-- begin-user-doc --> Write your own initialization here <!-- 
end-user-doc -->
-   * 
-   * @generated modifiable
-   */
-
-       private void readObject() {
-       }
+  // no constructor for Sofa for users
+  // use cas createSofa instead
+  
+       
+//     /**
+//      * 
+//      * @param jcas JCas
+//      * @param ID the sofa ID
+//      * @param mimeType the mime type
+//      * 
+//   * @deprecated As of v2.0, use {@link JCasImpl#createView(String)} to 
create a view, which will
+//   *             also create the Sofa for that view.
+//
+//      */
+//     @Deprecated
+//     public Sofa(JCas jcas, SofaID ID, String mimeType) {
+//             super(jcas);
+//             final CASImpl casImpl = jcasType.casImpl;
+//             casImpl.addSofa(this, ID.getSofaID(), mimeType);
+//    casImpl.getView(this); // needed to make reset work
+//     }
 
        // *--------------*
        // * Feature: sofaNum
   // ** Note: this gets the same feature, sofaNum, as getSofaRef, below
        /**
-   * getter for sofaNum - gets
-   * 
-   * @generated
+   * getter for sofaNum
    * @return the sofa number
    */
-       public int getSofaNum() {
-               if (Sofa_Type.featOkTst && ((Sofa_Type) 
jcasType).casFeat_sofaNum == null)
-                       this.jcasType.jcas.throwFeatMissing("sofaNum", 
"uima.cas.Sofa");
-               return jcasType.ll_cas.ll_getIntValue(addr, ((Sofa_Type) 
jcasType).casFeatCode_sofaNum);
-       }
-
+       public int getSofaNum() { return _F_sofaNum; }
+       
        // *--------------*
        // * Feature: sofaID
 
        /**
-   * getter for sofaID - gets
-   * 
-   * @generated
+   * getter for sofaID
+   * @return the sofaID, which is the same as the view name
    */
-       public String getSofaID() {
-               if (Sofa_Type.featOkTst && ((Sofa_Type) 
jcasType).casFeat_sofaID == null)
-                       this.jcasType.jcas.throwFeatMissing("sofaID", 
"uima.cas.Sofa");
-               return jcasType.ll_cas.ll_getStringValue(addr, ((Sofa_Type) 
jcasType).casFeatCode_sofaID);
-       }
+       @Override
+  public String getSofaID() { return _F_sofaID; }
 
        // *--------------*
        // * Feature: mimeType
 
        /**
    * getter for mimeType - gets
-   * 
-   * @generated
    * @return the mime type
    */
-       public String getMimeType() {
-               if (Sofa_Type.featOkTst && ((Sofa_Type) 
jcasType).casFeat_mimeType == null)
-                       this.jcasType.jcas.throwFeatMissing("mimeType", 
"uima.cas.Sofa");
-               return jcasType.ll_cas.ll_getStringValue(addr, ((Sofa_Type) 
jcasType).casFeatCode_mimeType);
-       }
-
-       // IMPORTANT: Methods below here are duplicated in SofaFSImpl. If they 
are
-       // changed here they must be changed in SofaFSImpl as well.
+       public String getMimeType() { return _F_mimeType; }
 
        /**
    * @see org.apache.uima.cas.SofaFS#setLocalSofaData(FeatureStructure) This 
method is duplicated in
    *      SofaFSImpl. Any changes should be made in both places.
+   * aFS must be an array
    */
-       public void setLocalSofaData(FeatureStructure aFS) {
-               final Feature arrayFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAARRAY);
-               if (isSofaDataSet()) {
-                       CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.SOFADATA_ALREADY_SET,
-                                       new String[] { "setLocalSofaData()" });
-                       throw e;
-               }
-               super.setFeatureValue(arrayFeat, aFS);
+  @Override
+  public void setLocalSofaData(FeatureStructure aFS) {   
+    if (isSofaDataSet()) { throwAlreadySet("setLocalSofaData()"); }
+    _F_sofaArray = (TOP) aFS;
+  }
+
+       public void setLocalSofaData(FeatureStructure aFS, String mimeType) {
+         setLocalSofaData(aFS);
+               _F_mimeType = mimeType;
        }
 
        /**
    * @see org.apache.uima.cas.SofaFS#setLocalSofaData(String) This method is 
duplicated in
    *      SofaFSImpl. Any changes should be made in both places.
    */
-       public void setLocalSofaData(String aString) {
-               final Feature stringFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFASTRING);
-               if (isSofaDataSet()) {
-                       CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.SOFADATA_ALREADY_SET,
-                                       new String[] { "setLocalSofaData()" });
-                       throw e;
-               }
-               super.setStringValue(stringFeat, aString);
-               // create or update the document annotation for this Sofa's view
-               CAS view = this.getCASImpl().getView(this);
-               ((CASImpl) view).updateDocumentAnnotation();
+  @Override
+  public void setLocalSofaData(String aString) {
+    if (isSofaDataSet()) { throwAlreadySet("setLocalSofaData()"); }
+    _F_sofaString = aString;
+
+    // create or update the document annotation for this Sofa's view
+    ((CASImpl)(_casView.getView(this))).updateDocumentAnnotation();
+  }
+
+  public void setLocalSofaData(String aString, String mimeType) {
+    setLocalSofaData(aString);
+    _F_mimeType = mimeType;
        }
 
        /**
-   * @see org.apache.uima.cas.SofaFS#getLocalFSData() This method is 
duplicated in SofaFSImpl. Any
-   *      changes should be made in both places.
+   * @see org.apache.uima.cas.SofaFS#getLocalFSData()
+   * returns an UIMA Array whose data represents the sofa
    */
-       public FeatureStructure getLocalFSData() {
-               final Feature arrayFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAARRAY);
-               return this.getFeatureValue(arrayFeat);
-       }
+       @Override
+  public FeatureStructure getLocalFSData() { return _F_sofaArray; }
 
        /**
    * @see org.apache.uima.cas.SofaFS#getLocalStringData() This method is 
duplicated in SofaFSImpl.
    *      Any changes should be made in both places.
    */
-       public String getLocalStringData() {
-               final Feature stringFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFASTRING);
-               return this.getStringValue(stringFeat);
-       }
+       @Override
+  public String getLocalStringData() { return _F_sofaString; }
 
        /**
    * @see org.apache.uima.cas.SofaFS#setRemoteSofaURI(String) This method is 
duplicated in
    *      SofaFSImpl. Any changes should be made in both places.
    */
-       public void setRemoteSofaURI(String aURI) {
-               final Feature uriFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAURI);
-               if (isSofaDataSet()) {
-                       CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.SOFADATA_ALREADY_SET,
-                                       new String[] { "setRemoteSofaURI()" });
-                       throw e;
-               }
-               super.setStringValue(uriFeat, aURI);
+  @Override
+  public void setRemoteSofaURI(String aURI) {
+    if (isSofaDataSet()) { throwAlreadySet("setRemoteSofaURI()"); }
+    _F_sofaURI = aURI;
+  }
+       
+       public void setRemoteSofaURI(String aURI, String mimeType) {
+    setRemoteSofaURI(aURI);
+    _F_mimeType = mimeType;
        }
 
        private boolean isSofaDataSet() {
-               final Feature uriFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAURI);
-               final Feature arrayFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAARRAY);
-               final Feature stringFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFASTRING);
-
-               if (null != this.getStringValue(uriFeat) || null != 
this.getFeatureValue(arrayFeat)
-                               || null != this.getStringValue(stringFeat)) {
-                       return true;
-               }
-               return false;
-       }
+         return getLocalStringData() != null || // string data
+                getLocalFSData()     != null || // array data 
+                getSofaURI()         != null;   // remote data
+       }
+       
+  @Override
+  public String getSofaMime() { return _F_mimeType; }
 
-       // override setStringValue for SofaFS to not work!
-       // This method is duplicated in SofaFSImpl. Any changes should be made 
in both places.
-       public void setStringValue(Feature feat, String val) {
-               CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
-               throw e;
-       }
+  @Override
+  public String getSofaURI() { return _F_sofaURI; }
 
-       // override setFeatureValue for SofaFS to not work!
-       // This method is duplicated in SofaFSImpl. Any changes should be made 
in both places.
-       public void setFeatureValue(Feature feat, FeatureStructure fs) {
-               CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
-               throw e;
-       }
+  // ** Note: this gets the feature named "sofaNum"
+  @Override
+  public int getSofaRef() { return _F_sofaNum; }
 
-  // override setIntValue for SofaFS to not work!
-  // This method is duplicated in SofaFSImpl. Any changes should be made in 
both places.
-  public void setIntValue(Feature feat, Integer val) {
-    CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
-    throw e;
+  @Override
+  public InputStream getSofaDataStream() {
+    return _casView.getSofaDataStream(this);
   }
-
-       // This method is duplicated in SofaFSImpl. Any changes should be made 
in both places.
-       public String getSofaMime() {
-               final Feature mimeFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAMIME);
-               return 
jcasType.casImpl.getLowLevelCAS().ll_getStringValue(super.addr,
-                               ((FeatureImpl) mimeFeat).getCode());
+       
+  /**
+   * These getter methods are for creating method handle access
+   * The getter name must match the feature name + transformation
+   *   - used in generic pretty printing routines
+   */
+  
+  public TOP getSofaArray() { return _F_sofaArray; }
+  
+  public String getSofaString() { return _F_sofaString; }
+    
+
+       // override setStringValue for SofaFS to prohibit setting in this 
manner!
+       @Override
+  public void setStringValue(Feature feat, String val) {
+         throw new 
CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
+       }
+
+       // override setFeatureValue for SofaFS to prohibit setting in this 
manner!
+       @Override
+  public void setFeatureValue(Feature feat, FeatureStructure fs) {
+               throw new 
CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
        }
 
-       // This method is duplicated in SofaFSImpl. Any changes should be made 
in both places.
-       public String getSofaURI() {
-               final Feature uriFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFAURI);
-               return 
jcasType.casImpl.getLowLevelCAS().ll_getStringValue(super.addr,
-                               ((FeatureImpl) uriFeat).getCode());
-       }
-
-       // This method is duplicated in SofaFSImpl. Any changes should be made 
in both places.
-  // ** Note: this gets the feature named "sofaNum"
-       public int getSofaRef() {
-               final Feature numFeat = 
jcasType.casImpl.getTypeSystem().getFeatureByFullName(
-                               CAS.FEATURE_FULL_NAME_SOFANUM);
-               return 
jcasType.casImpl.getLowLevelCAS().ll_getIntValue(super.addr,
-                               ((FeatureImpl) numFeat).getCode());
-       }
+  // override setIntValue for SofaFS to prohibit setting in this manner!
+  public void setIntValue(Feature feat, Integer val) {
+    throw new CASRuntimeException(CASRuntimeException.PROTECTED_SOFA_FEATURE);
+  }
 
-       public InputStream getSofaDataStream() {
-               return jcasType.casImpl.getSofaDataStream(this);
+       
+       private void throwAlreadySet(String msg) {
+         throw new 
CASRuntimeException(CASRuntimeException.SOFADATA_ALREADY_SET, msg);
        }
 
 }

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
 Mon Nov  2 12:19:46 2015
@@ -20,11 +20,13 @@
 package org.apache.uima.jcas.cas;
 
 import org.apache.uima.cas.StringArrayFS;
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.TypeImpl;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.JCasRegistry;
 
 /** JCas class model for StringArray */
-public final class StringArray extends TOP implements StringArrayFS {
+public final class StringArray extends TOP implements CommonPrimitiveArray, 
StringArrayFS {
   /**
    * Each cover class when loaded sets an index. Used in the JCas typeArray to 
go from the cover
    * class or class instance to the corresponding instance of the _Type class
@@ -43,13 +45,11 @@ public final class StringArray extends T
     return typeIndexID;
   }
 
+  private final String[] theArray;
   // never called. Here to disable default constructor
+  @SuppressWarnings("unused")
   private StringArray() {
-  }
-
- /* Internal - Constructor used by generator */
-  public StringArray(int addr, TOP_Type type) {
-    super(addr, type);
+    theArray = null;
   }
 
   /**
@@ -58,61 +58,60 @@ public final class StringArray extends T
    * @param length The number of elements in the new array
    */
   public StringArray(JCas jcas, int length) {
-    this(
-    /* addr 
*/jcas.getLowLevelCas().ll_createArray(jcas.getType(typeIndexID).casTypeCode, 
length,
-            true),
-    /* type */jcas.getType(typeIndexID));
+    super(jcas);
+    theArray = new String[length];
+  }
+
+  /**
+   * used by generator
+   * Make a new StringArray of given size
+   * @param c -
+   * @param t -
+   * @param length the length of the array in bytes
+   */
+  public StringArray(TypeImpl t, CASImpl c, int length) {
+    super(t, c);  
+    theArray = new String[length];
   }
 
   /**
    * @see org.apache.uima.cas.StringArrayFS#get(int)
    */
   public String get(int i) {
-    jcasType.casImpl.checkArrayBounds(addr, i);
-    return jcasType.ll_cas.ll_getStringArrayValue(addr, i);
+    return theArray[i];
   }
 
   /**
    * @see org.apache.uima.cas.StringArrayFS#set(int, String)
    */
   public void set(int i, String v) {
-    jcasType.casImpl.checkArrayBounds(addr, i);
-    jcasType.ll_cas.ll_setStringArrayValue(addr, i, v);
+    theArray[i] = v;
   }
 
   /**
    * @see org.apache.uima.cas.StringArrayFS#copyFromArray(String[], int, int, 
int)
    */
-  public void copyFromArray(String[] src, int srcOffset, int destOffset, int 
length) {
-    jcasType.casImpl.checkArrayBounds(addr, destOffset, length);
-    for (int i = 0; i < length; i++) {
-      jcasType.ll_cas.ll_setStringArrayValue(addr, i + destOffset, src[i + 
srcOffset]);
-    }
+  public void copyFromArray(String[] src, int srcPos, int destPos, int length) 
{
+    System.arraycopy(src, srcPos, theArray, destPos, length);
   }
 
   /**
    * @see org.apache.uima.cas.StringArrayFS#copyToArray(int, String[], int, 
int)
    */
-  public void copyToArray(int srcOffset, String[] dest, int destOffset, int 
length) {
-    jcasType.casImpl.checkArrayBounds(addr, srcOffset, length);
-    for (int i = 0; i < length; i++) {
-      dest[i + destOffset] = jcasType.ll_cas.ll_getStringArrayValue(addr, i + 
srcOffset);
-    }
+  public void copyToArray(int srcPos, String[] dest, int destPos, int length) {
+    System.arraycopy(theArray, srcPos, dest, destPos, length);
   }
 
   /**
    * @see org.apache.uima.cas.StringArrayFS#toArray()
    */
   public String[] toArray() {
-    final int size = size();
-    String[] outArray = new String[size];
-    copyToArray(0, outArray, 0, size);
-    return outArray;
+    return theArray.clone();
   }
 
   /** return the size of the array */
   public int size() {
-    return jcasType.casImpl.ll_getArraySize(addr);
+    return theArray.length;
   }
 
   public String[] toStringArray() {
@@ -121,4 +120,19 @@ public final class StringArray extends T
     copyToArray(0, strArray, 0, size);
     return strArray;
   }
+  
+  // internal use
+  public String[] _getTheArray() {
+    return theArray;
+  }
+  
+  /* (non-Javadoc)
+   * @see 
org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray)
+   */
+  @Override
+  public void copyValuesFrom(CommonArray v) {
+    StringArray bv = (StringArray) v;
+    System.arraycopy(bv.theArray,  0,  theArray, 0, theArray.length);
+  }
+
 }

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java?rev=1711942&r1=1711941&r2=1711942&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java
 Mon Nov  2 12:19:46 2015
@@ -19,58 +19,75 @@
 
 package org.apache.uima.jcas.cas;
 
-import org.apache.uima.cas.CASRuntimeException;
+import org.apache.uima.cas.impl.CASImpl;
+import org.apache.uima.cas.impl.TypeImpl;
 import org.apache.uima.jcas.JCas;
-import org.apache.uima.jcas.JCasRegistry;
 
-public class StringList extends org.apache.uima.jcas.cas.TOP {
-
-       public final static int typeIndexID = 
JCasRegistry.register(StringList.class);
-
-       public final static int type = typeIndexID;
-
-       public int getTypeIndexID() {
-               return typeIndexID;
-       }
+public abstract class StringList extends CommonList {
 
        // Never called.
        protected StringList() { // Disable default constructor
        }
 
-       /* Internal - Constructor used by generator */
-       public StringList(int addr, TOP_Type type) {
-               super(addr, type);
-       }
-
        public StringList(JCas jcas) {
                super(jcas);
        }
 
-       public String getNthElement(int i) {
-               if (this instanceof EmptyStringList) {
-                       CASRuntimeException casEx = new CASRuntimeException(
-                                       
CASRuntimeException.JCAS_GET_NTH_ON_EMPTY_LIST, new String[] { 
"EmptyStringList" });
-                       throw casEx;
-               }
-
-               if (i < 0) {
-                       CASRuntimeException casEx = new CASRuntimeException(
-                                       
CASRuntimeException.JCAS_GET_NTH_NEGATIVE_INDEX, new String[] { 
Integer.toString(i) });
-                       throw casEx;
-               }
-
-               int originali = i;
-               StringList cg = this;
-               for (;; i--) {
-                       if (cg instanceof EmptyStringList) {
-                               CASRuntimeException casEx = new 
CASRuntimeException(
-                                               
CASRuntimeException.JCAS_GET_NTH_PAST_END, new String[] { 
Integer.toString(originali) });
-                               throw casEx;
-                       }
-                       NonEmptyStringList c = (NonEmptyStringList) cg;
-                       if (i == 0)
-                               return c.getHead();
-                       cg = c.getTail();
-               }
-       }
+  /**
+   * used by generator
+   * Make a new AnnotationBase
+   * @param c -
+   * @param t -
+   */
+
+  public StringList(TypeImpl t, CASImpl c) {
+    super(t, c);
+  }
+
+  public String getNthElement(int i) {
+    return ((NonEmptyStringList) getNonEmptyNthNode(i)).getHead();
+  }
+   
+  public NonEmptyStringList createNonEmptyNode(CommonList tail) {
+    NonEmptyStringList node = new NonEmptyStringList(this._typeImpl, 
this._casView);
+    node.setTail((StringList) tail);
+    return node;
+  }
+  
+  public NonEmptyStringList createNonEmptyNode() { return 
createNonEmptyNode(null); }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode()
+   */
+  @Override
+  public EmptyStringList getEmptyNode() {
+    return EmptyStringList.singleton;
+  }
+  
+ 
+  /* (non-Javadoc)
+   * @see org.apache.uima.jcas.cas.CommonList#get_headAsString()
+   */
+  @Override
+  public String get_headAsString() {
+    return ((NonEmptyStringList)this).getHead();
+  }
+
+  /* (non-Javadoc)
+   * @see org.apache.uima.jcas.cas.CommonList#getTail()
+   */
+  @Override
+  public CommonList getTail() {
+    return ((NonEmptyStringList)this).getTail();
+  }
+
+  /* (non-Javadoc)
+   * @see 
org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList)
+   */
+  @Override
+  public void setTail(CommonList v) {
+    ((NonEmptyStringList)this).setTail(v);
+  }
+  
+
 }

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/TOP.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/TOP.java?rev=1711942&r1=1711941&r2=1711942&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/TOP.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/TOP.java
 Mon Nov  2 12:19:46 2015
@@ -19,166 +19,62 @@
 
 package org.apache.uima.jcas.cas;
 
-import org.apache.uima.cas.CAS;
-import org.apache.uima.cas.CASRuntimeException;
 import org.apache.uima.cas.impl.CASImpl;
-import org.apache.uima.cas.impl.FeatureStructureImpl;
-import org.apache.uima.cas.impl.LowLevelCAS;
+import org.apache.uima.cas.impl.FeatureStructureImplC;
+import org.apache.uima.cas.impl.TypeImpl;
 import org.apache.uima.jcas.JCas;
 import org.apache.uima.jcas.JCasRegistry;
+import org.apache.uima.jcas.impl.JCasImpl;
 
 // *********************************
 // * Implementation of TOP *
 // *********************************
 /**
- * The Java Class model corresponding to the Cas TOP type. This type is the 
super type of all
- * feature structures. This type implements FeatureStructure since subclasses 
of it are the FSs
- * generated by this system.
+ * The JCas Class model corresponding to the Cas TOP type. This type is the 
super type of all
+ * JCas feature structures.
  */
-public class TOP extends FeatureStructureImpl {
+public class TOP extends FeatureStructureImplC {
 
        /**
    * Each cover class when loaded sets an index. Used in the JCas typeArray to 
go from the cover
    * class or class instance to the corresponding instance of the _Type class
    */
-       public final static int typeIndexID = JCasRegistry.register(TOP.class);
+       public final static int typeIndexID = 
JCasRegistry.register(AnnotationBase.class);  
 
        public final static int type = typeIndexID;
 
        /**
-   * used to obtain reference to the TOP_Type instance
    * 
    * @return the type array index
    */
        // can't be factored - refs locally defined field
+       @Override
        public int getTypeIndexID() {
                return typeIndexID;
        }
 
-       /*
-   * Note this class doesn't extend FeatureStructureImpl because that would 
add one more slot (the
-   * casImpl ref) to every instance.
-   * 
-   * Note: the jcasType slot points to an instance of the _Type class;
-   *   there's one per CAS (unique base cas)
-   *   This slot is updated to reflect the current View, though, to make add 
to indexes more likely to be what's intended
-   */
-       /** used to reference the corresponding TOP_Type instance */
-       public TOP_Type jcasType;
-
-       /** used to reference the corresponding Cas instance */
-       protected final int addr;
-
-       // This constructor is never called .
-       // Have to set "final" values to avoid compile errors
-       protected TOP() {
-               jcasType = null;
-               addr = 0;
-               throw new RuntimeException("Internal Error: TOP() constructor 
should never be called.");
-       }
-
-       /*
-   * (Internal) make a new instance of TOP, linking it with a pre-existing Cas 
FeatureStructure
-   * object. Note: this function invoked via the generator in TOP_Type 
whenever the CAS needs to
-   * make a java instance
-   */
-       public TOP(int addr, TOP_Type jcasType) {
-               this.addr = addr;
-               this.jcasType = jcasType;
-       }
-
-       /*
-   * (Internal) create a new instance of TOP (or subclass of TOP) in Java and 
Cas, and make them
-   * correspond.
-   */
-       public TOP(JCas jcas) {
-    CASImpl casImpl = (CASImpl)jcas.getCas();
-               this.jcasType = jcas.getType(getTypeIndexID());
-               if (null == jcasType) {
-                       CASRuntimeException e = new 
CASRuntimeException(CASRuntimeException.JCAS_TYPE_NOT_IN_CAS,
-                                       new String[] { 
this.getClass().getName() });
-                       throw e;
-               }
-    boolean isSubtypeOfAnnotationBase = 
casImpl.isSubtypeOfAnnotationBaseType(jcasType.casTypeCode);
-    if (isSubtypeOfAnnotationBase &&
-        (casImpl.getBaseCAS() == casImpl)) {
-      throw new 
CASRuntimeException(CASRuntimeException.DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS,
-          new String[] { this.getClass().getName() });
-    }
-               this.addr = jcasType.ll_cas.ll_createFS(jcasType.casTypeCode);
-               jcas.putJfsFromCaddr(addr, this);
-               
-               if 
(casImpl.isSubtypeOfAnnotationBaseType(jcasType.casTypeCode)) {
-      casImpl.setSofaFeat(addr, casImpl.getSofaRef());
-               }
-       }
-
-       /** add the corresponding FeatureStructure to all Cas indexes in the 
view where this FS was created*/
-       public void addToIndexes() {
-               addToIndexes(jcasType.jcas);
-       }
-  
-       /**
-        * add this FS to indexes in a specific view, perhaps different from 
the creation view
-        * @param jcas the JCas
-        */
-       public void addToIndexes(JCas jcas) {
-               jcas.getCas().addFsToIndexes(this);
-       }
-
-       /** remove the corresponding FeatureStructure from all Cas indexes in 
the view where this FS was created */
-       public void removeFromIndexes() {
-               removeFromIndexes(jcasType.jcas);
-       }
-
-       /**
-        * remove this FS from indexes in a specific view, perhaps different 
from the view where this was created.
-        * @param jcas the JCas
-        */
-       public void removeFromIndexes(JCas jcas) {
-               jcas.getLowLevelIndexRepository().ll_removeFS(this.addr);
-       }
-
-       /*
-   * functions needed to to implement the FeatureStructure interface 
-   * Note we don't simply implement this class as a subclass of 
FeatureStructureImpl 
-   * because that would add one more slot to every instance
+  // never called. Here to disable default constructor
+  protected TOP() {
+  }
+
+  /**
+   * used by generator
+   * Make a new TOP
+   * @param c -
+   * @param t -
    */
 
-       public int getAddress() {
-               return this.addr;
-       }
-
-       public CASImpl getCASImpl() {
-               return jcasType.casImpl;
+       public TOP(TypeImpl t, CASImpl c) {
+         super(t, c);
        }
 
        /**
-        * @return the CAS view where this FS was created
+        * This version is used by user code new XXX(jcas)
+        * @param jcas
         */
-       public CAS getCAS() {
-               return jcasType.casImpl;
-       }
-
-       public LowLevelCAS getLowLevelCas() {
-               return jcasType.casImpl;
-       }
-
-       public boolean equals(Object o) {
-               if (o == null) {
-                       return false;
-               }
-               if (!(o instanceof TOP))
-                       return false;
-               TOP fs = (TOP) o;
-               if ((this.addr == fs.addr) && 
(this.jcasType.casImpl.getBaseCAS() == fs.jcasType.casImpl.getBaseCAS())) {
-                       return true;
-               }
-               return false;
+       public TOP(JCas jcas) {
+         super((JCasImpl) jcas);         
        }
 
-       public int hashCode() {
-               return this.addr;
-       }
 
 }



Reply via email to