svn commit: r1742313 - in /uima/uimaj/trunk/uimaj-core/src/test/java: aa/Root.java aa/Root_Type.java org/apache/uima/jcas/test/CASTestSetup.java org/apache/uima/jcas/test/JCasTest.java org/apache/uima
Author: schor Date: Wed May 4 18:12:40 2016 New Revision: 1742313 URL: http://svn.apache.org/viewvc?rev=1742313&view=rev Log: no Jira - add tests to cover float, double, and arrays of these Modified: uima/uimaj/trunk/uimaj-core/src/test/java/aa/Root.java uima/uimaj/trunk/uimaj-core/src/test/java/aa/Root_Type.java uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/CASTestSetup.java uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/jcas/test/generatedx.xml Modified: uima/uimaj/trunk/uimaj-core/src/test/java/aa/Root.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/aa/Root.java?rev=1742313&r1=1742312&r2=1742313&view=diff == --- uima/uimaj/trunk/uimaj-core/src/test/java/aa/Root.java (original) +++ uima/uimaj/trunk/uimaj-core/src/test/java/aa/Root.java Wed May 4 18:12:40 2016 @@ -17,417 +17,471 @@ * under the License. */ + +/* First created by JCasGen Wed May 04 13:57:58 EDT 2016 */ package aa; -import org.apache.uima.jcas.JCas; +import org.apache.uima.jcas.JCas; +import org.apache.uima.jcas.JCasRegistry; +import org.apache.uima.jcas.cas.TOP_Type; + import org.apache.uima.jcas.cas.FSArray; -import org.apache.uima.jcas.cas.FloatArray; +import org.apache.uima.jcas.cas.LongArray; import org.apache.uima.jcas.cas.IntegerArray; -import org.apache.uima.jcas.cas.StringArray; import org.apache.uima.jcas.cas.TOP; -import org.apache.uima.jcas.cas.TOP_Type; +import org.apache.uima.jcas.cas.DoubleArray; +import org.apache.uima.jcas.cas.FloatArray; +import org.apache.uima.jcas.cas.StringArray; -/** - * Updated by JCasGen Tue Feb 21 14:56:04 EST 2006 XML source: - * C:/a/Eclipse/3.1/j4/jedii_jcas_tests/testTypes.xml - * - * @generated - */ + +/** + * Updated by JCasGen Wed May 04 13:57:58 EDT 2016 + * XML source: C:/au/svnCheckouts/trunk/uimaj280/uimaj/uimaj-core/src/test/java/org/apache/uima/jcas/test/generatedx.xml + * @generated */ public class Root extends TOP { - /** - * @generated - * @ordered + /** @generated + * @ordered */ - public final static int typeIndexID = org.apache.uima.jcas.JCasRegistry.register(Root.class); - - /** - * @generated - * @ordered + @SuppressWarnings ("hiding") + public final static int typeIndexID = JCasRegistry.register(Root.class); + /** @generated + * @ordered */ + @SuppressWarnings ("hiding") public final static int type = typeIndexID; - - /** @generated */ - public int getTypeIndexID() { -return typeIndexID; - } - - /** - * Never called. Disable default constructor - * - * @generated + /** @generated + * @return index of the type */ - protected Root() { - } - - /** - * Internal - constructor used by generator - * + @Override + public int getTypeIndexID() {return typeIndexID;} + + /** Never called. Disable default constructor + * @generated */ + protected Root() {/* intentionally empty block */} + + /** Internal - constructor used by generator * @generated + * @param addr low level Feature Structure reference + * @param type the type of this Feature Structure */ public Root(int addr, TOP_Type type) { super(addr, type); readObject(); } - - /** @generated */ + + /** @generated + * @param jcas JCas to which this Feature Structure belongs + */ public Root(JCas jcas) { super(jcas); -readObject(); - } - - /** - * Write your own initialization here - * - * @generated modifiable - */ - private void readObject() { - } +readObject(); + } - // *--* - // * Feature: arrayInt + /** + * + * Write your own initialization here + * + * + * @generated modifiable + */ + private void readObject() {/*default - does nothing empty block */} + + + + //*--* + //* Feature: arrayInt - /** - * getter for arrayInt - gets - * + /** getter for arrayInt - gets * @generated + * @return value of the feature */ public IntegerArray getArrayInt() { -if (Root_Type.featOkTst && ((Root_Type) jcasType).casFeat_arrayInt == null) - this.jcasType.jcas.throwFeatMissing("arrayInt", "aa.Root"); -return (IntegerArray) (jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefValue(addr, -((Root_Type) jcasType).casFeatCode_arrayInt))); - } - - /** - * setter for arrayInt - sets - * +if (Root_Type.featOkTst && ((Root_Type)jcasType).casFeat_arrayInt == null) + jcasType.jcas.throwFeatMissing("arrayInt", "aa.Root"); +return (IntegerArray)(jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefValue(addr, ((Root_Type)jcasType).casFeatCode_arrayInt)));} + + /** setter for arrayInt - sets
svn commit: r1742314 - /uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java
Author: schor Date: Wed May 4 18:18:57 2016 New Revision: 1742314 URL: http://svn.apache.org/viewvc?rev=1742314&view=rev Log: no Jira - add test for low level set int value Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java?rev=1742314&r1=1742313&r2=1742314&view=diff == --- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java (original) +++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java Wed May 4 18:18:57 2016 @@ -28,8 +28,11 @@ import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; +import org.apache.uima.cas.impl.FeatureImpl; +import org.apache.uima.cas.impl.FeatureStructureImpl; import org.apache.uima.cas.impl.LowLevelCAS; import org.apache.uima.cas.impl.LowLevelTypeSystem; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.cas.text.AnnotationFS; /** @@ -262,6 +265,16 @@ public class FeatureStructureTest extend testString = ""; token.setStringValue(this.lemmaFeat, testString); assertTrue(token.getStringValue(this.lemmaFeat).equals(testString)); + +// test low level +LowLevelCAS llcas = cas.getLowLevelCAS(); +token.setFeatureValue(tokenTypeFeat, word); +int fsRef = ((FeatureStructureImpl)token).getAddress(); +int fc = ((FeatureImpl)tokenTypeFeat).getCode(); +assertEquals(llcas.ll_getIntValue(fsRef, fc), word.hashCode()); +FeatureStructureImpl word2 = cas.createFS(wordType); +llcas.ll_setIntValue(fsRef, fc, word2.hashCode()); +assertEquals(token.getFeatureValue(tokenTypeFeat), word2); } public void testSetFloatValue() {
svn commit: r1742428 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java
Author: schor Date: Thu May 5 13:47:03 2016 New Revision: 1742428 URL: http://svn.apache.org/viewvc?rev=1742428&view=rev Log: [UIMA-4915] don't try to enqueue null items Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java?rev=1742428&r1=1742427&r2=1742428&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java Thu May 5 13:47:03 2016 @@ -835,7 +835,9 @@ public class CasSerializerSupport { (null == filterTypeSystem.getType(elem._typeImpl.getName( { continue; // skip because not in filter type system } - enqueue(elem); + if (elem != null) { +enqueue(elem); + } } return;
svn commit: r1742465 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/impl/OptimizeStrings.java
Author: schor Date: Thu May 5 19:52:12 2016 New Revision: 1742465 URL: http://svn.apache.org/viewvc?rev=1742465&view=rev Log: no Jira, refactor - change ArrayList to IntVector, and use a better for loop Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/impl/OptimizeStrings.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/impl/OptimizeStrings.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/impl/OptimizeStrings.java?rev=1742465&r1=1742464&r2=1742465&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/impl/OptimizeStrings.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/impl/OptimizeStrings.java Thu May 5 19:52:12 2016 @@ -27,6 +27,8 @@ import java.util.Map; import java.util.Set; import java.util.TreeSet; +import org.apache.uima.internal.util.IntVector; + /** * Share common underlying char[] among strings: Optimize sets of strings for * efficient storage @@ -283,7 +285,7 @@ public class OptimizeStrings { String previous = ""; int previousOffset = 0; offsets = new int[ssLength]; -List lastIndexInCommonStrings = new ArrayList(); +IntVector lastIndexInCommonStrings = new IntVector(); List commonStrings = new ArrayList(); for (int i = ssLength - 1; i >= 0; i--) { @@ -311,10 +313,8 @@ public class OptimizeStrings { lastIndexInCommonStrings.add(0); // the last index // convert List to int[] -lastIndexInCommonStringsA = new int[lastIndexInCommonStrings.size()]; -for (int i = 0; i < lastIndexInCommonStrings.size(); i++) { - lastIndexInCommonStringsA[i] = lastIndexInCommonStrings.get(i); -} +lastIndexInCommonStrings.toArray(); +lastIndexInCommonStringsA = lastIndexInCommonStrings.toArray(); commonStringsA = commonStrings.toArray(new String[commonStrings.size()]);
svn commit: r1742568 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/ObjHashSet.java
Author: schor Date: Fri May 6 17:42:13 2016 New Revision: 1742568 URL: http://svn.apache.org/viewvc?rev=1742568&view=rev Log: [UIMA-4674] support concurrent modification exception detection; fix impl of moveTo for bag index when not found, to follow the interface spec and return an invalid iterator; change shrink trigger to size < 1/4 (not 1/2) of size which triggers expansion. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/ObjHashSet.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/ObjHashSet.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/ObjHashSet.java?rev=1742568&r1=1742567&r2=1742568&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/ObjHashSet.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/ObjHashSet.java Fri May 6 17:42:13 2016 @@ -27,7 +27,6 @@ import java.util.NoSuchElementException; import java.util.Set; import org.apache.uima.cas.FeatureStructure; -import org.apache.uima.util.Misc; /** * A set of Objects of type T @@ -68,6 +67,8 @@ public class ObjHashSet implements Se private boolean secondTimeShrinkable = false; + private int modificationCount = 0; + public ObjHashSet(Class clazz, T removedMarker) { this(12, clazz, removedMarker); // default initial size } @@ -158,12 +159,13 @@ public class ObjHashSet implements Se private void resetTable() { resetHistogram(); size = 0; +modificationCount ++; } @Override public void clear() { -// see if size is less than the 1/2 size that triggers expansion -if (size < (sizeWhichTriggersExpansion >>> 1)) { +// see if size is less than the 1/4 size that triggers expansion +if (size < (sizeWhichTriggersExpansion >>> 2)) { // if 2nd time then shrink by 50% // this is done to avoid thrashing around the threshold if (secondTimeShrinkable) { @@ -274,6 +276,7 @@ public class ObjHashSet implements Se } keys[i] = obj; incrementSize(); +modificationCount ++; return true; } @@ -308,7 +311,8 @@ public class ObjHashSet implements Se private boolean removeAtPosition(int pos) { // found, remove it keys[pos] = (T) removedMarker; // at runtime, this cast is a no-op -size--; +size --; +modificationCount ++; nbrRemoved ++; return true; } @@ -476,9 +480,9 @@ public class ObjHashSet implements Se /** * if the fs is in the set, the iterator should return it. - * if not, move to the first - just to return something. + * if not, return -1 (makes iterator invalid) * @param fs position to this fs - * @return the index if present, otherwise moveToNextFileed(0); + * @return the index if present, otherwise -1; */ public int moveTo(FeatureStructure fs) { if (clazz.isAssignableFrom(fs.getClass())) { @@ -487,7 +491,7 @@ public class ObjHashSet implements Se return pos; } } -return moveToFirst(); +return -1; } @Override @@ -568,4 +572,8 @@ public class ObjHashSet implements Se } return anyChanged; } + + public int getModificationCount() { +return modificationCount; + } }
svn commit: r1742569 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/UIMAClassLoader.java
Author: schor Date: Fri May 6 17:42:46 2016 New Revision: 1742569 URL: http://svn.apache.org/viewvc?rev=1742569&view=rev Log: no jira - clean up imports Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/UIMAClassLoader.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/UIMAClassLoader.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/UIMAClassLoader.java?rev=1742569&r1=1742568&r2=1742569&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/UIMAClassLoader.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/UIMAClassLoader.java Fri May 6 17:42:46 2016 @@ -27,8 +27,6 @@ import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; -import org.apache.uima.util.Misc; - /** * UIMAClassLoader is used as extension ClassLoader for UIMA to load additional components like * annotators and resources. The classpath of the classloader is specified as string.
svn commit: r1742570 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBTcommon.java
Author: schor Date: Fri May 6 17:43:16 2016 New Revision: 1742570 URL: http://svn.apache.org/viewvc?rev=1742570&view=rev Log: no Jira, add comment Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBTcommon.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBTcommon.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBTcommon.java?rev=1742570&r1=1742569&r2=1742570&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBTcommon.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/rb_trees/IntArrayRBTcommon.java Fri May 6 17:43:16 2016 @@ -32,6 +32,17 @@ import org.apache.uima.internal.util.Str public class IntArrayRBTcommon { static final boolean debug = false; + /** + * klrp: Key, Left, Right, Parent + * + * Each "node" has a node address. + * The Left, Right, and Parent are in terms of the the node address. + * The key is arbitrary, but kept in sorted order. + * + * A global, "root" has the node address of the root node. + * The range of possible nodes is 0 to Integer.MAX_VALUE, but 0 is reserved as NIL + * + */ protected int[] klrp; // the next 3 are for the rare cases where the number of entries // in this instance exceeds 512 * 1024 * 1024 - 1
svn commit: r1742571 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/
Author: schor Date: Fri May 6 17:52:17 2016 New Revision: 1742571 URL: http://svn.apache.org/viewvc?rev=1742571&view=rev Log: [UIMA-4897] add hooks to FS creation tracing for arrays Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java?rev=1742571&r1=1742570&r2=1742571&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java Fri May 6 17:52:17 2016 @@ -63,6 +63,10 @@ public final class BooleanArray extends public BooleanArray(JCas jcas, int length) { super(jcas); theArray = new boolean[length]; + +if (CASImpl.traceFSs) { + _casView.traceFSCreate(this); +} } /** @@ -74,6 +78,9 @@ public final class BooleanArray extends public BooleanArray(TypeImpl t, CASImpl c, int l) { super(t, c); theArray = new boolean[l]; +if (CASImpl.traceFSs) { + _casView.traceFSCreate(this); +} } /** Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java?rev=1742571&r1=1742570&r2=1742571&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java Fri May 6 17:52:17 2016 @@ -60,6 +60,9 @@ public final class ByteArray extends TOP public ByteArray(JCas jcas, int length) { super(jcas); theArray = new byte[length]; +if (CASImpl.traceFSs) { + _casView.traceFSCreate(this); +} } /** @@ -72,6 +75,9 @@ public final class ByteArray extends TOP public ByteArray(TypeImpl t, CASImpl c, int length) { super(t, c); theArray = new byte[length]; +if (CASImpl.traceFSs) { + _casView.traceFSCreate(this); +} } /** Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java?rev=1742571&r1=1742570&r2=1742571&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java Fri May 6 17:52:17 2016 @@ -61,6 +61,9 @@ public final class DoubleArray extends T public DoubleArray(JCas jcas, int length) { super(jcas); theArray = new double[length]; +if (CASImpl.traceFSs) { + _casView.traceFSCreate(this); +} } /** @@ -73,6 +76,9 @@ public final class DoubleArray extends T public DoubleArray(TypeImpl t, CASImpl c, int length) { super(t, c); theArray = new double[length]; +if (CASImpl.traceFSs) { + _casView.traceFSCreate(this); +} } /** Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/o
svn commit: r1742572 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas: AnnotationBase.java Sofa.java
Author: schor Date: Fri May 6 17:53:19 2016 New Revision: 1742572 URL: http://svn.apache.org/viewvc?rev=1742572&view=rev Log: [UIMA-4897] use setter method instead of direct array setting, to pick up tracing hooks Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/Sofa.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java?rev=1742572&r1=1742571&r2=1742572&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/AnnotationBase.java Fri May 6 17:53:19 2016 @@ -22,6 +22,7 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.AnnotationBaseFS; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASRuntimeException; +import org.apache.uima.cas.SofaFS; import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.cas.impl.TypeSystemImpl; @@ -79,7 +80,7 @@ public class AnnotationBase extends TOP throw new CASRuntimeException(CASRuntimeException.DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS, this.getClass().getName()); } // no journaling, no index corruption checking -_refData[_FI_sofa] = _casView.getSofa(); +_setRefValueCommon(_FI_sofa, _casView.getSofa()); } /** @@ -95,7 +96,7 @@ public class AnnotationBase extends TOP throw new CASRuntimeException(CASRuntimeException.DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS, this.getClass().getName()); } // no journaling, no index corruption checking -_refData[_FI_sofa] = _casView.getSofa(); +_setRefValueCommon(_FI_sofa, _casView.getSofa()); } // *--* 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=1742572&r1=1742571&r2=1742572&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 Fri May 6 17:53:19 2016 @@ -76,9 +76,9 @@ public class Sofa extends TOP implements public Sofa(TypeImpl t, CASImpl c, int sofaNum, String viewName, String mimeType) { super(t, c); -_intData[_FI_sofaNum ] = sofaNum; -_refData[_FI_sofaID ] = viewName; -_refData[_FI_mimeType] = mimeType; +_setIntValueNcNj(_FI_sofaNum, sofaNum); +_setRefValueCommon(_FI_sofaID, viewName); +_setRefValueCommon(_FI_mimeType, mimeType); //_F_sofaNum = sofaNum; //_F_sofaID = viewName; //_F_mimeType = mimeType;
svn commit: r1742573 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/tcas/Annotation.java
Author: schor Date: Fri May 6 17:55:08 2016 New Revision: 1742573 URL: http://svn.apache.org/viewvc?rev=1742573&view=rev Log: (empty) Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/tcas/Annotation.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/tcas/Annotation.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/tcas/Annotation.java?rev=1742573&r1=1742572&r2=1742573&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/tcas/Annotation.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/tcas/Annotation.java Fri May 6 17:55:08 2016 @@ -143,11 +143,10 @@ public class Annotation extends Annotati * @return */ public int compareAnnotation(Annotation other) { -int[] o = other._intData; -int result = Integer.compare(_intData[_FI_begin], o[_FI_begin]); +int result = Integer.compare(_getIntValueNc(_FI_begin), other._getIntValueNc(_FI_begin)); if (result != 0) return result; -result = Integer.compare(_intData[_FI_end], o[_FI_end]); +result = Integer.compare(_getIntValueNc(_FI_end), other._getIntValueNc(_FI_end)); return (result == 0) ? 0 : -result; // reverse compare } @@ -157,14 +156,10 @@ public class Annotation extends Annotati * @return */ public int compareAnnotation(Annotation other, LinearTypeOrder lto) { -int[] o = other._intData; -int result = Integer.compare(_intData[_FI_begin], o[_FI_begin]); +int result = compareAnnotation(other); if (result != 0) return result; - -result = Integer.compare(_intData[_FI_end], o[_FI_end]); -if (result != 0) return -result; -return lto.compare(this, other); +return lto.compare(this, other); }
svn commit: r1742574 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java
Author: schor Date: Fri May 6 18:06:27 2016 New Revision: 1742574 URL: http://svn.apache.org/viewvc?rev=1742574&view=rev Log: [UIMA-4674] [UIMA-4920] Clarify java doc for edge cases re views. Rename some variables and types to reduce casting. Reset to original state after copy view (so that target view doesn't persist to further uses of the cas copier instance). get corresponding tgt view by name, and respect component sofa mapping. For copying FS which are subtypes of AnnotationBase, use the sofa there to specify the view to copy to. When copying long/double value, copy 2nd part. Handle copying of arrays of specific FSs; where the target type system could be missing the type. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java?rev=1742574&r1=1742573&r2=1742574&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java Fri May 6 18:06:27 2016 @@ -35,8 +35,10 @@ import org.apache.uima.cas.impl.FeatureI import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.internal.util.Int2ObjListMap; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.PositiveIntSet; import org.apache.uima.internal.util.PositiveIntSet_impl; +import org.apache.uima.jcas.cas.AnnotationBase; import org.apache.uima.jcas.cas.CommonArray; import org.apache.uima.jcas.cas.CommonPrimitiveArray; import org.apache.uima.jcas.cas.FSArray; @@ -56,12 +58,26 @@ import org.apache.uima.jcas.tcas.Annotat * the method getLowLevelCas() which should return a reference to the underlying CAS which can be * successfully cast to a CASImpl. * - * The source and target CASs must be separate CASs (that is, not two views of the same CAS), with - * one exception: + * The source and target view names for FSs are the same except if: + * - The constructor of the CAS Copier instance specifies two different view names, or + * - The copyCasView method(s) specify two different view names. + * In both these cases, the FSs copied are between different views. + * Feature Structures belonging to one view will be belonging to the other view in the copy. + * Exception: Feature Structures which are subtypes of AnnotationBase belong to the view + * associated with the AnnotationBase's sofa reference. * - * If the CopyCasView API is being used, and the target View name is different from the source view name, + * The source and target CASs must be separate CASs (that is, not two views of the same CAS), + * unless the target View name is different from the source view name. * + * The copied FSs have their associated CAS references set to a corresponding view in the target. * + * The corresponding view is the view in the target with the same view name as the source view + * (perhaps after sofa mapping specified by the target CAS's current component sofa mapping info), + * except for the copyCasView calls, where the target view is specified explicitly. + * + * But if the FS being copied is a subtype of AnnotationBase, then the corresponding view for the copy of the + * sofa reference (if not null) is used. + * */ public class CasCopier { @@ -185,11 +201,11 @@ public class CasCopier { // private final TypeInfo[] tInfoArray; // these next are called original, as they are the views used to create the CasCopier instance - private final CAS originalSrcCas; - private final CAS originalTgtCas; - // these next are the CASImpls of these - private final CASImpl originalSrcCasImpl; - private final CASImpl originalTgtCasImpl; + private final CASImpl originalSrcCas; + private final CASImpl originalTgtCas; +// // these next are the CASImpls of these +// private final CASImpl originalSrcCasImpl; +// private final CASImpl originalTgtCasImpl; // these next 2 are like the above, but for explicit view copying @@ -207,6 +223,9 @@ public class CasCopier { private final boolean isEqualTypeSystems; + private String cachedSrcViewName = ""; + private CASImpl cachedTgtView = null; + // // private final TypeImpl srcStringType; @@ -278,14 +297,11 @@ public class CasCopier { public CasCopier(CAS aSrcCas, CAS aDestCas, boolean lenient) { mFsMap = new IdentityHashMap<>(((CASImpl)(aSrcCas.getLowLevelCAS())).getLastUsedFsId()); -originalSrcCas = aSrcCas; -originalT
svn commit: r1742575 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima: internal/util/Misc.java util/Misc.java
Author: schor Date: Fri May 6 18:12:42 2016 New Revision: 1742575 URL: http://svn.apache.org/viewvc?rev=1742575&view=rev Log: [UIMA-4674] move Misc to internal package so we can add new things without triggering a version enforcement issue Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java - copied, changed from r1739309, uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/Misc.java Removed: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/Misc.java Copied: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java (from r1739309, uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/Misc.java) URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java?p2=uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java&p1=uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/Misc.java&r1=1739309&r2=1742575&rev=1742575&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/Misc.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java Fri May 6 18:12:42 2016 @@ -17,7 +17,7 @@ * under the License. */ -package org.apache.uima.util; +package org.apache.uima.internal.util; import java.io.ByteArrayOutputStream; import java.io.File; @@ -37,6 +37,7 @@ import java.util.regex.Pattern; import org.apache.uima.UIMARuntimeException; import org.apache.uima.cas.CAS; +import org.apache.uima.cas.function.Runnable_withException; public class Misc { @@ -292,7 +293,7 @@ public class Misc { throw new UIMARuntimeException(UIMARuntimeException.INTERNAL_ERROR); } - public static void assertUie(boolean v, Exception e) { + public static void assertUie(boolean v, Throwable e) { if (!v) throw new UIMARuntimeException(e, UIMARuntimeException.INTERNAL_ERROR); } @@ -301,7 +302,7 @@ public class Misc { assertUie(false); } - public static void internalError(Exception e) { + public static void internalError(Throwable e) { assertUie(false, e); } @@ -436,6 +437,27 @@ public class Misc { } return className; } + + public static void timeLoops(String title, int iterations, Runnable_withException r) throws Exception { +long shortest = Long.MAX_VALUE; +for (int i = 0; i < iterations; i++) { + long startTime = System.nanoTime(); + r.run(); + long time = (System.nanoTime() - startTime)/ 1000; // microseconds + if (time < shortest) { +shortest = time; +System.out.format("%s: speed is %,d microseconds on iteration %,d%n", title, shortest, i); + } +} + } + + public static void sleep(int milliseconds) { +try { + Thread.sleep(milliseconds); +} catch (InterruptedException e) { + throw new RuntimeException(e); +} + } //private static final Function uimaSystemFindLoadedClass; //static {
svn commit: r1742577 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util: Int2ObjHashMap.java Int2ObjListMap.java IntHashSet.java Obj2IntIdentityHashMap
Author: schor Date: Fri May 6 18:18:51 2016 New Revision: 1742577 URL: http://svn.apache.org/viewvc?rev=1742577&view=rev Log: [UIMA-4664] new set-sorted index impl based on expandable arrays, with intelligent management of adds / removes. Also fix refs to Misc for moved class. Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/OrderedFsSet_array.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjListMap.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/IntHashSet.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java?rev=1742577&r1=1742576&r2=1742577&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjHashMap.java Fri May 6 18:18:51 2016 @@ -23,8 +23,6 @@ import java.lang.reflect.Array; import java.util.Arrays; import java.util.NoSuchElementException; -import org.apache.uima.util.Misc; - /** * A map<int, T> * Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjListMap.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjListMap.java?rev=1742577&r1=1742576&r2=1742577&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjListMap.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Int2ObjListMap.java Fri May 6 18:18:51 2016 @@ -21,8 +21,6 @@ package org.apache.uima.internal.util; import java.util.ArrayList; -import org.apache.uima.util.Misc; - /** * A map<int, T> * Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/IntHashSet.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/IntHashSet.java?rev=1742577&r1=1742576&r2=1742577&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/IntHashSet.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/IntHashSet.java Fri May 6 18:18:51 2016 @@ -22,8 +22,6 @@ package org.apache.uima.internal.util; import java.util.Arrays; import java.util.NoSuchElementException; -import org.apache.uima.util.Misc; - /** * A set of non-zero ints. * 0 reserved internally to indicate "not in the map"; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java?rev=1742577&r1=1742576&r2=1742577&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java Fri May 6 18:18:51 2016 @@ -24,7 +24,6 @@ import java.util.Arrays; import java.util.NoSuchElementException; import org.apache.uima.cas.FeatureStructure; -import org.apache.uima.util.Misc; /** * A Map from non-null Objects of type T to ints Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/OrderedFsSet_array.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/OrderedFsSet_array.java?rev=1742577&view=auto == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/uti
svn commit: r1742580 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/admin/CASMgr.java
Author: schor Date: Fri May 6 18:25:40 2016 New Revision: 1742580 URL: http://svn.apache.org/viewvc?rev=1742580&view=rev Log: no Jira - comment only and add @Deprecated to do-nothing method Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/admin/CASMgr.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/admin/CASMgr.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/admin/CASMgr.java?rev=1742580&r1=1742579&r2=1742580&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/admin/CASMgr.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/admin/CASMgr.java Fri May 6 18:25:40 2016 @@ -75,6 +75,11 @@ public interface CASMgr { */ void enableReset(boolean flag); + /** + * Does nothing, kept only for backwards compatibility + * @param cas - + */ + @Deprecated void setCAS(CAS cas); /**
svn commit: r1742581 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java
Author: schor Date: Fri May 6 18:27:21 2016 New Revision: 1742581 URL: http://svn.apache.org/viewvc?rev=1742581&view=rev Log: [UIMA-4670] add a messasge Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java?rev=1742581&r1=1742580&r2=1742581&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Fri May 6 18:27:21 2016 @@ -60,8 +60,11 @@ public class CASRuntimeException extends /** Error accessing type system: the type system has not been committed. */ public static final String TYPESYSTEM_NOT_LOCKED = "TYPESYSTEM_NOT_LOCKED"; - - /** Can't create FS of type "{0}" until the type system has been committed. */ + + /** Can''t add an array type "{0}" to the type system after the type system has been committed. */ + public static final String ADD_ARRAY_TYPE_AFTER_TS_COMMITTED = "ADD_ARRAY_TYPE_AFTER_TS_COMMITTED"; + + /** Can''t create FS of type "{0}" until the type system has been committed. */ public static final String CREATE_FS_BEFORE_TS_COMMITTED = "CREATE_FS_BEFORE_TS_COMMITTED"; /** Cannot request the Java Class for a UIMA type before type system commit **/
svn commit: r1742582 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/BuiltinTypeKinds.java
Author: schor Date: Fri May 6 18:28:22 2016 New Revision: 1742582 URL: http://svn.apache.org/viewvc?rev=1742582&view=rev Log: [UIMA-4674] move Misc to internal package so we can add new things without triggering a version enforcement issue Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/BuiltinTypeKinds.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/BuiltinTypeKinds.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/BuiltinTypeKinds.java?rev=1742582&r1=1742581&r2=1742582&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/BuiltinTypeKinds.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/BuiltinTypeKinds.java Fri May 6 18:28:22 2016 @@ -3,7 +3,7 @@ package org.apache.uima.cas; import java.util.HashSet; import java.util.Set; -import org.apache.uima.util.Misc; +import org.apache.uima.internal.util.Misc; public class BuiltinTypeKinds {
svn commit: r1742583 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java
Author: schor Date: Fri May 6 18:29:08 2016 New Revision: 1742583 URL: http://svn.apache.org/viewvc?rev=1742583&view=rev Log: [UIMA-4674] support for default iterator impl that skips redundant has-next test Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java?rev=1742583&r1=1742582&r2=1742583&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/FSIterator.java Fri May 6 18:29:08 2016 @@ -114,6 +114,11 @@ public interface FSIterator
svn commit: r1742584 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/function/Runnable_withException.java
Author: schor Date: Fri May 6 18:30:32 2016 New Revision: 1742584 URL: http://svn.apache.org/viewvc?rev=1742584&view=rev Log: [UIMA-4674] support for test cases for timing loops that might throw exceptions Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/function/Runnable_withException.java Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/function/Runnable_withException.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/function/Runnable_withException.java?rev=1742584&view=auto == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/function/Runnable_withException.java (added) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/function/Runnable_withException.java Fri May 6 18:30:32 2016 @@ -0,0 +1,24 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.uima.cas.function; + +@FunctionalInterface +public interface Runnable_withException { + void run() throws Exception; +}
svn commit: r1742586 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: LongSet.java StringSet.java
Author: schor Date: Fri May 6 18:32:06 2016 New Revision: 1742586 URL: http://svn.apache.org/viewvc?rev=1742586&view=rev Log: [UIMA-4674] backward compatibility support - for get/set int used to manipulate refs to strings and longs/doubles. Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LongSet.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringSet.java Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LongSet.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LongSet.java?rev=1742586&view=auto == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LongSet.java (added) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LongSet.java Fri May 6 18:32:06 2016 @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.uima.cas.impl; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Sets of long values, used to support ll_set/getIntValue that manipulate v2 style long data + * + */ +final class LongSet { + + private int lastLongCode = 0; + final private ArrayList longs = new ArrayList<>(); + {longs.add(null);} + final private HashMap long2int = new HashMap<>(); + + // Reset the long heap (called on CAS reset). + final void reset() { +longs.clear(); +longs.add(null); +long2int.clear(); +lastLongCode = 0; + } + + // Get a long value + Long getLongForCode(int longCode) { +if (longCode == LowLevelCAS.NULL_FS_REF) { + return null; +} +return longs.get(longCode); + } + + /** + * get the code for a long, adding it to the long table if not already there. + * @param s The long. + * @return The code corresponding to the long, which can be used in the getLongForCode call above + */ + int getCodeForLong(Long s) { +if (s == null) { + return LowLevelCAS.NULL_FS_REF; +} + +Integer prev = long2int.putIfAbsent(s, lastLongCode + 1); +if (prev == null) { + longs.add(s); + return ++lastLongCode; +} + +return prev; + } + + + final int getSize() { + return this.longs.size(); + } + +} Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringSet.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringSet.java?rev=1742586&view=auto == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringSet.java (added) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/StringSet.java Fri May 6 18:32:06 2016 @@ -0,0 +1,76 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.uima.cas.impl; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * Like string heap, but keeps strings in a set + * + */ +final class StringSet { + + private int lastStringCode = 0; + final pri
svn commit: r1742587 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: CASMgrSerializer.java CASSerializer.java CasTypeSystemMapper.java CommonSerDesSeque
Author: schor Date: Fri May 6 18:44:58 2016 New Revision: 1742587 URL: http://svn.apache.org/viewvc?rev=1742587&view=rev Log: [UIMA-4674] move Misc to internal package so we can add new things without triggering a version enforcement issue, change getFeatureImpls to return array, not arraylist (performance) Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASMgrSerializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasTypeSystemMapper.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Heap.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/UimaDecompiler.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASMgrSerializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASMgrSerializer.java?rev=1742587&r1=1742586&r2=1742587&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASMgrSerializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASMgrSerializer.java Fri May 6 18:44:58 2016 @@ -34,8 +34,8 @@ import org.apache.uima.cas.Type; import org.apache.uima.cas.admin.FSIndexComparator; import org.apache.uima.cas.admin.LinearTypeOrder; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.SymbolTable; -import org.apache.uima.util.Misc; /** * Container for serialized CAS typing information. Contains information about the type system, as Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java?rev=1742587&r1=1742586&r2=1742587&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java Fri May 6 18:44:58 2016 @@ -30,6 +30,7 @@ import org.apache.uima.cas.Marker; import org.apache.uima.cas.function.IntConsumer_withIOException; import org.apache.uima.cas.impl.CASImpl.FsChange; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.Obj2IntIdentityHashMap; import org.apache.uima.jcas.cas.BooleanArray; import org.apache.uima.jcas.cas.ByteArray; @@ -41,7 +42,6 @@ import org.apache.uima.jcas.cas.LongArra import org.apache.uima.jcas.cas.ShortArray; import org.apache.uima.jcas.cas.StringArray; import org.apache.uima.jcas.cas.TOP; -import org.apache.uima.util.Misc; /** * This object has 2 purposes. @@ -692,7 +692,7 @@ public class CASSerializer implements Se int offset = fm.nextSetBit(0); while (offset >= 0) { chgMainHeapAddr.add(csds.fs2addr.get(fs) + offset + 1); // skip over type code); - FeatureImpl feat = type.getFeatureImpls().get(offset); + FeatureImpl feat = type.getFeatureImpls()[offset]; switch (feat.getSlotKind()) { case Slot_Boolean: chgMainHeapValue.add(fs._getBooleanValueNc(feat) ? 1 : 0); break; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasTypeSystemMapper.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasTypeSystemMapper.java?rev=1742587&r1=1742586&r2=1742587&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasTypeSystemMapper.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasTypeSystemMapper.java Fri May 6 18:44:58 2016 @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.uima.cas.CASRuntimeException; -import org.apache.uima.util.Misc; +import org.apache.uima.internal.util.Misc; /** * This class gets initialized with two type systems, and then provides @@ -213,7 +213,7 @@ public class CasTypeSystemMapper {
svn commit: r1742594 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: BinaryCasSerDes.java BinaryCasSerDes4.java BinaryCasSerDes6.java
Author: schor Date: Fri May 6 19:29:26 2016 New Revision: 1742594 URL: http://svn.apache.org/viewvc?rev=1742594&view=rev Log: [UIMA-4674] move Misc to internal package so we can add new things without triggering a version enforcement issue, change getFeatureImpls to return array, not arraylist (performance) Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java?rev=1742594&r1=1742593&r2=1742594&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java Fri May 6 19:29:26 2016 @@ -42,6 +42,7 @@ import org.apache.uima.cas.impl.SlotKind import org.apache.uima.internal.util.Int2ObjHashMap; import org.apache.uima.internal.util.IntListIterator; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.Obj2IntIdentityHashMap; import org.apache.uima.jcas.cas.BooleanArray; import org.apache.uima.jcas.cas.ByteArray; @@ -56,7 +57,6 @@ import org.apache.uima.jcas.cas.Sofa; import org.apache.uima.jcas.cas.StringArray; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.resource.ResourceInitializationException; -import org.apache.uima.util.Misc; /** * Binary (mostly non compressed) CAS deserialization @@ -328,7 +328,7 @@ public class BinaryCasSerDes { TypeImpl type = fs._typeImpl; boolean wasRemoved; if (!type.isArray()) { -FeatureImpl feat = type.getFeatureImpls().get(heapAddr - fsStartAddr - 1); +FeatureImpl feat = type.getFeatureImpls()[heapAddr - fsStartAddr - 1]; wasRemoved = baseCas.checkForInvalidFeatureSetting(fs, feat.getCode(), tobeAddedback); addrOfFsToBeAddedBack = wasRemoved ? fsStartAddr : 0; fsToBeAddedBack = wasRemoved ? fs : null; @@ -761,7 +761,7 @@ public class BinaryCasSerDes { // loop over all heap modifications to existing FSs // first disable auto addbacks for index corruption - this routine is handling that -baseCas.svd.fsTobeAddedbackSingleInUse = true; // sorry, a bad hack... +baseCas.svd.disableAutoCorruptionCheck = true; try { for (int i = 0; i < modWords.length; i = i + 2) { @@ -773,7 +773,7 @@ public class BinaryCasSerDes { bds.addBackIfRemoved(); bds.fssAddrArray = null; // free storage } finally { - baseCas.resetAddbackSingleInUse(); + baseCas.svd.disableAutoCorruptionCheck = false; } } @@ -1163,7 +1163,7 @@ public class BinaryCasSerDes { public static int getFsSpaceReq(TOP fs, TypeImpl type) { // use method in type; pass in array size if array -return type.getFsSpaceReq(type.isHeapStoredArray() ? ((CommonArray)fs).size() : 0); +return type.getFsSpaceReq(fs); } @@ -1659,7 +1659,7 @@ public class BinaryCasSerDes { } else { // end of arrays // is plain fs with fields final int offset0 = slotAddr - bds.fsStartAddr - 1; // 0 based offset of feature, -1 for type code word - FeatureImpl feat = type.getFeatureImpls().get(offset0); + FeatureImpl feat = type.getFeatureImpls()[offset0]; SlotKind slotKind = feat.getSlotKind(); switch(slotKind) { case Slot_Boolean: Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java?rev=1742594&r1=1742593&r2=1742594&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java Fri May 6 19:29:26 2016 @@ -54,6 +54,7 @@ import org.apache.uima.cas.impl.SlotKind import org.apache.uima.internal.util.Int2ObjHashMap; import org.apache.uima.internal.util.IntListIterator; import org.apache.uima.internal.util.IntVector; +import org.apache.u
svn commit: r1742598 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java
Author: schor Date: Fri May 6 19:33:50 2016 New Revision: 1742598 URL: http://svn.apache.org/viewvc?rev=1742598&view=rev Log: [UIMA-4674] move Misc to internal package so we can add new things without triggering a version enforcement issue, add exception for getters which return SofaFS instead of Sofa (backwards compatibility) Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java?rev=1742598&r1=1742597&r2=1742598&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSClassRegistry.java Fri May 6 19:33:50 2016 @@ -31,6 +31,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Parameter; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,10 +42,10 @@ import org.apache.uima.cas.BuiltinTypeKi import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.CASRuntimeException; +import org.apache.uima.internal.util.Misc; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.util.Level; import org.apache.uima.util.Logger; -import org.apache.uima.util.Misc; /* * There is one class instance of this per class loader. @@ -675,7 +676,7 @@ public class FSClassRegistry { /** JCas Class's supertypes for "{0}", "{1}" and the corresponding UIMA Supertypes for "{2}", "{3}" don't have an intersection. */ add2errors(errorSet, new CASRuntimeException(CASRuntimeException.JCAS_CAS_MISMATCH_SUPERTYPE, - clazz.getName(), Misc.ppList(superClasses), ti.getName(), Misc.ppList(ti.getAllSuperTypes())), + clazz.getName(), Misc.ppList(superClasses), ti.getName(), Misc.ppList(Arrays.asList(ti.getAllSuperTypes(, true); // throwable error } @@ -704,12 +705,18 @@ public class FSClassRegistry { rangeClass = range.getComponentType().getJavaClass(); } } - if (!rangeClass.isAssignableFrom(returnClass)) { // can return subclass of TOP, OK if range is TOP -/** CAS type system type "{0}" defines field "{1}" with range "{2}", but JCas class has range "{3}". */ -add2errors(errorSet, - new CASRuntimeException(CASRuntimeException.JCAS_TYPE_RANGE_MISMATCH, - ti.getName(), fi.getShortName(), rangeClass, returnClass), - false); // should throw, but some code breaks! + if (!rangeClass.isAssignableFrom(returnClass)) { // can return subclass of TOP, OK if range is TOP +if (rangeClass.getName().equals("org.apache.uima.jcas.cas.Sofa") && // exception: for backwards compat reasons, sofaRef returns SofaFS, not Sofa. +returnClass.getName().equals("org.apache.uima.cas.SofaFS")) { + // empty +} else { + + /** CAS type system type "{0}" defines field "{1}" with range "{2}", but JCas getter method is returning "{3}" which is not a subtype of the declared range.*/ + add2errors(errorSet, + new CASRuntimeException(CASRuntimeException.JCAS_TYPE_RANGE_MISMATCH, + ti.getName(), fi.getShortName(), rangeClass, returnClass), + false); // should throw, but some code breaks! +} } }
svn commit: r1742600 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java
Author: schor Date: Fri May 6 19:39:53 2016 New Revision: 1742600 URL: http://svn.apache.org/viewvc?rev=1742600&view=rev Log: [UIMA-4674] move Misc to internal package, tweak internal comparator generic type (more specific), add support for test cases, that removes defined indexes (only works if nothing has been added to indexes), change concurrent modification detection - put into individual indexes (better locality of ref). remove extra method duplic. by cas method. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java?rev=1742600&r1=1742599&r2=1742600&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java Fri May 6 19:39:53 2016 @@ -47,11 +47,11 @@ import org.apache.uima.cas.admin.LinearT import org.apache.uima.cas.admin.LinearTypeOrderBuilder; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.ObjHashSet; import org.apache.uima.jcas.cas.AnnotationBase; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.jcas.tcas.Annotation; -import org.apache.uima.util.Misc; /** * There is one instance of this class per CAS View. @@ -102,7 +102,8 @@ public class FSIndexRepositoryImpl imple public static final String DISABLE_ENHANCED_WRONG_INDEX = "uima.disable_enhanced_check_wrong_add_to_index"; - private static final boolean IS_DISABLE_ENHANCED_WRONG_INDEX_CHECK = Misc.getNoValueSystemProperty(DISABLE_ENHANCED_WRONG_INDEX); + private static final boolean IS_DISABLE_ENHANCED_WRONG_INDEX_CHECK = // true || // debug + Misc.getNoValueSystemProperty(DISABLE_ENHANCED_WRONG_INDEX); // Implementation note: the use of equals() here is pretty hairy and // should probably be fixed. We rely on the fact that when two @@ -168,9 +169,9 @@ public class FSIndexRepositoryImpl imple /** * lazily created comparator using the built-in annotation index */ -private Comparator annotationFsComparator = null; +private Comparator annotationFsComparator = null; -private Comparator annotationFsComparatorWithId = null; +private Comparator annotationFsComparatorWithId = null; /** * optimization only - bypasses some shared (among views) initialization if already done @@ -255,6 +256,20 @@ public class FSIndexRepositoryImpl imple } return null; } + +private void removeIndexExcludingType(int indexingStrategy, FSIndexComparatorImpl comparatorForIndexSpecs) { + Iterator> it = indexesForType.iterator(); + while (it.hasNext()) { +FsIndex_singletype singleTypeIndex = it.next().fsIndex_singletype; +if (singleTypeIndex.getIndexingStrategy() == indexingStrategy) { + FSIndexComparatorImpl indexComp = singleTypeIndex.getComparatorImplForIndexSpecs(); + if (indexComp.equalsWithoutType(comparatorForIndexSpecs)) { +it.remove(); +break; + } +} + } +} @Override public String toString() { @@ -296,14 +311,15 @@ public class FSIndexRepositoryImpl imple IndexesForType getIndexesForUsedType(int i) { return indexArray[this.usedIndexes.get(i)]; } - - /** - * an array of ints, one for each type in the type hierarchy. - * Used to enable iterators to detect modifications (adds / removes) - * to indexes they're iterating over while they're iterating over them. - * Not private so it can be seen by FSLeafIndexImpl - */ - final int[] detectIllegalIndexUpdates; + + // moved from here into individual indexes over each type, for better locality of reference +// /** +// * an array of ints, one for each type in the type hierarchy. +// * Used to enable iterators to detect modifications (adds / removes) +// * to indexes they're iterating over while they're iterating over them. +// * Not private so it can be seen by FSLeafIndexImpl +// */ +// final int[] detectIllegalIndexUpdates; /** * A map from names to FsIndex_iicps, which represent the index at the @@ -386,7 +402,7 @@ public class FSIndexRepositoryImpl imple this.sii = null; this.name2indexMap = null; this.indexArray = null; -this.detectIllegalIndexUpdates = null; +//this.detectIllegalIndexUpdat
svn commit: r1742601 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java
Author: schor Date: Fri May 6 19:41:37 2016 New Revision: 1742601 URL: http://svn.apache.org/viewvc?rev=1742601&view=rev Log: [UIMA-4674] change feat offsets to short, for better locality of ref; precompute more boolean values Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java?rev=1742601&r1=1742600&r2=1742601&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java Fri May 6 19:41:37 2016 @@ -39,21 +39,24 @@ public class FeatureImpl implements Feat * the 0 based offset for this feature ignoring ref/int distinction, in feature order, without regard to JCas implemented features; set at commit time * used by v2 style de/serializers */ - private int featureOffset = -1; - private int adjustedFeatureOffset = -1; // the offset in the storage array for this feature, adjusted to exclude JCas implemented features; set at commit time + private short featureOffset = -1; + private short adjustedFeatureOffset = -1; // the offset in the storage array for this feature, adjusted to exclude JCas implemented features; set at commit time // not used 2/29/16 to be removed //int registryIndex = -1; // set from JCas classes feature registry // used to setup index corruption bitset public final boolean isInInt;// specifies which array the data is in - + private final boolean isMultipleRefsAllowed; + /** + * true if the range is a long or double + */ + public final boolean isLongOrDouble; private TypeImpl highestDefiningType; // not final, could change private final TypeImpl rangeType; // private final TypeSystemImpl ts; - private final boolean isMultipleRefsAllowed; /** * true for the feature which is the AnnotationBase sofa reference. */ @@ -77,6 +80,7 @@ public class FeatureImpl implements Feat shortName = null; slotKind = null; rangeTypeClass = 0; +isLongOrDouble = false; } FeatureImpl(TypeImpl typeImpl, String shortName, TypeImpl rangeType, TypeSystemImpl tsi, boolean isMultipleRefsAllowed, SlotKind slotKind) { @@ -86,6 +90,7 @@ public class FeatureImpl implements Feat featureCode = feats.size(); this.rangeType = rangeType; + this.isLongOrDouble = rangeType.isLongOrDouble; this.slotKind = slotKind; this.shortName = shortName; this.isMultipleRefsAllowed = isMultipleRefsAllowed; @@ -145,8 +150,9 @@ public class FeatureImpl implements Feat @Override public String toString() { return String.format( -"%s [%s: rangeType=%s, isMultipleRefsAllowed=%s]", -this.getClass().getSimpleName(), getName(), rangeType, isMultipleRefsAllowed); +"%s [%s: rangeType=%s, isMultipleRefsAllowed=%s, slotKind=%s]", +this.getClass().getSimpleName(), getName(), rangeType, isMultipleRefsAllowed, +slotKind); } // public String getGetterSetterName(boolean isGet) { @@ -180,7 +186,10 @@ public class FeatureImpl implements Feat } void setOffset(int offset) { -featureOffset = offset; +if (offset > Short.MAX_VALUE) { + throw new RuntimeException("Feature Offset exceeds maximum of 32767"); +} +featureOffset = (short) offset; } public int getAdjustedOffset() { @@ -188,7 +197,10 @@ public class FeatureImpl implements Feat } void setAdjustedOffset(int offset) { -adjustedFeatureOffset = offset; +if (offset > Short.MAX_VALUE) { + throw new RuntimeException("Feature Offset exceeds maximum of 32767"); +} +adjustedFeatureOffset = (short) offset; } // /**
svn commit: r1742603 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
Author: schor Date: Fri May 6 19:52:23 2016 New Revision: 1742603 URL: http://svn.apache.org/viewvc?rev=1742603&view=rev Log: [UIMA-4674] [UIMA-4897] move Misc to internal package, support tracing of FS creation and updates. remove redundant featurevalidationcheck from setStringValue. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java?rev=1742603&r1=1742602&r2=1742603&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java Fri May 6 19:52:23 2016 @@ -32,7 +32,7 @@ import org.apache.uima.cas.FeatureStruct import org.apache.uima.cas.SofaFS; import org.apache.uima.cas.Type; import org.apache.uima.cas.impl.SlotKinds.SlotKind; -import org.apache.uima.cas_data.impl.FeatureStructureImpl; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.StringUtils; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.cas.AnnotationBase; @@ -49,7 +49,6 @@ import org.apache.uima.jcas.cas.ShortArr import org.apache.uima.jcas.cas.StringArray; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.jcas.impl.JCasImpl; -import org.apache.uima.util.Misc; /** * Feature structure implementation (for non JCas and JCas) @@ -82,19 +81,55 @@ public class FeatureStructureImplC imple public static final String DISABLE_RUNTIME_FEATURE_RANGE_VALIDATION = "uima.disable_runtime_feature_range_validation"; public static final boolean IS_ENABLE_RUNTIME_FEATURE_RANGE_VALIDATION = !Misc.getNoValueSystemProperty(DISABLE_RUNTIME_FEATURE_RANGE_VALIDATION); - + + private static final boolean traceFSs = CASImpl.traceFSs; + public static final int IN_SET_SORTED_INDEX = 1; + + // next is for experiment of allocating multiple int arrays for different fss + +// //3322 1100 +// //1098 7654 3210 9876 5432 1098 7654 3210 +// //--- +// // 0001 1000 int offset mask +// //0111 1110 ref offset mask +// +// private static final int bitMaskIntOffset = 0x001ff800; +// private static final int bitMaskRefOffset = 0x7fe0; +// private static final int shiftIntOffset = 11; +// private static final int shiftRefOffset = 21; + // data storage // slots start with _ to prevent name collision with JCas style getters and setters. - protected final int[] _intData; - protected final Object[] _refData; + /** + * Experiment: + * goal: speed up allocation and maybe improve locality of reference + * a) have _intData and _refData point to + * 1) for array sizes < 256, a common shared array used with an offset + * 2) for array sizes > 256, individual arrays as is the previous design case + * + * b) have accesses use an offset kept in the flags; + *allocate in blocks of 1k + * the larger, the less java object overhead per + * the larger, the less "breakage" waste + * the smaller, the better GC + *offset = 10 bits * 2 (one for int, one for ref) + * + * results: on 16-way processor (64 hyperthreaded cores), caused 2x slowdown, probably due to cache + * contention. + */ + + private final int[] _intData; + private final Object[] _refData; protected final int _id; // a separate slot for access without loading _intData object - protected int flags = 0; // a set of flags + private int _flags = 0; // a set of flags // bit 0 (least significant): fs is in one or more non-bag indexes -// bits 1-31 reserved +// bit 1-20 reserved +// bits 21-30 ref offset +// bits 11-20 int offset +// bit 31 reserved - /** * These next two object references are the same for every FS of this class created in one view. * So, they could be stored in a shared object @@ -108,9 +143,9 @@ public class FeatureStructureImplC imple * * Also used to access other metadata including the type system */ - protected final CASImpl _casView; + public final CASImpl _casView
svn commit: r1742604 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java
Author: schor Date: Fri May 6 19:53:47 2016 New Revision: 1742604 URL: http://svn.apache.org/viewvc?rev=1742604&view=rev Log: [UIMA-4674] add version of moveToPrevious that skips validity check; use when test is redundant. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java?rev=1742604&r1=1742603&r2=1742604&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FilteredIterator.java Fri May 6 19:53:47 2016 @@ -99,6 +99,11 @@ class FilteredIterator
svn commit: r1742605 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_bag.java
Author: schor Date: Fri May 6 20:02:58 2016 New Revision: 1742605 URL: http://svn.apache.org/viewvc?rev=1742605&view=rev Log: [UIMA-4664] remove unused methods Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_bag.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_bag.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_bag.java?rev=1742605&r1=1742604&r2=1742605&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_bag.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_bag.java Fri May 6 20:02:58 2016 @@ -70,8 +70,8 @@ public class FsIndex_bag iterator() { -return new FsIterator_bag(this, getDetectIllegalIndexUpdates(), getTypeCode()); - } - - /* - * Iterator support - */ - boolean isValid(int itPos) { -return index.isValid(itPos); - } - - int moveToFirst() { -return index.moveToFirst(); - } - - int moveToLast() { -return index.moveToLast(); - } - - int moveToNext(int itPos) { - return index.moveToNext(itPos); - } - - int moveToPrevious(int itPos) { -return index.moveToPrevious(itPos); - } - - T get(int itPos) { -return (T) index.get(itPos); +return new FsIterator_bag(this, type); } ObjHashSet getObjHashSet() {
svn commit: r1742606 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_flat.java
Author: schor Date: Fri May 6 20:05:29 2016 New Revision: 1742606 URL: http://svn.apache.org/viewvc?rev=1742606&view=rev Log: [UIMA-4664] remove unused methods Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_flat.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_flat.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_flat.java?rev=1742606&r1=1742605&r2=1742606&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_flat.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_flat.java Fri May 6 20:05:29 2016 @@ -90,7 +90,7 @@ public class FsIndex_flat
svn commit: r1742607 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java
Author: schor Date: Fri May 6 20:08:13 2016 New Revision: 1742607 URL: http://svn.apache.org/viewvc?rev=1742607&view=rev Log: [UIMA-4664] convert cache from arraylist to array. convert some stream ops to conventional ops. add internal getTypecode(). Add some @Override annotations Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java?rev=1742607&r1=1742606&r2=1742607&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_iicp.java Fri May 6 20:08:13 2016 @@ -48,7 +48,7 @@ class FsIndex_iicp> cachedSubFsLeafIndexes = null; + FsIndex_singletype[] cachedSubFsLeafIndexes = null; // VOLATILE to permit double-checked locking technique private volatile boolean isIteratorCacheSetup = false; @@ -71,14 +71,14 @@ class FsIndex_iicp lii = cachedSubFsLeafIndexes.get(i); +FsIndex_singletype lii = cachedSubFsLeafIndexes[i]; sb.append(" cache ").append(i++); sb.append(" ").append(lii).append('\n'); } - if (cachedSubFsLeafIndexes.size() > 3) { -sb.append(" ... and " + (cachedSubFsLeafIndexes.size() - 3) + " more\n"); + if (cachedSubFsLeafIndexes.length > 3) { +sb.append(" ... and " + (cachedSubFsLeafIndexes.length - 3) + " more\n"); } } return sb.toString(); @@ -145,7 +145,7 @@ class FsIndex_iicp> tempSubIndexCache = new ArrayList>(); sortedTypeCodes = (indexKind == FSIndex.SORTED_INDEX) ? new int[size] : null; - initOneType(rootType, tempSubIndexCache, indexKind); + initOneTypeThenAllSubtypes(rootType, tempSubIndexCache, indexKind); // Stream typePlusSubtypes = (indexKind == FSIndex.DEFAULT_BAG_INDEX) @@ -167,7 +167,7 @@ class FsIndex_iicp> cache, int indexKind) { + /** + * This method inits one type then calls itself for all direct subtypes + * @param ti + * @param cache + * @param indexKind + */ + private void initOneTypeThenAllSubtypes(TypeImpl ti, ArrayList> cache, int indexKind) { final FsIndex_singletype singleIndex = fsIndexRepositoryImpl.getIndexBySpec( ti.getCode(), @@ -191,7 +197,7 @@ class FsIndex_iicp cp) { final int typeCode1 = ((TypeImpl) this.fsIndex_singletype.getType()).getCode(); final int typeCode2 = ((TypeImpl) cp.fsIndex_singletype.getType()).getCode(); @@ -223,9 +230,14 @@ class FsIndex_iicp iicp.size()).sum(); +int size = 0; +for (FsIndex_singletype iicp : cachedSubFsLeafIndexes) { + size += iicp.size(); +} +return size; } public boolean isEmpty() { @@ -240,10 +252,10 @@ class FsIndex_iicp> localIc = this.cachedSubFsLeafIndexes; -final int len = localIc.size(); +final FsIndex_singletype[] localIc = this.cachedSubFsLeafIndexes; +final int len = localIc.length; for (int i = 0; i < len; i++) { - if (localIc.get(i).size() > 0) { + if (localIc[i].size() > 0) { return true; }; } @@ -260,12 +272,12 @@ class FsIndex_iicp> localIc = this.cachedSubFsLeafIndexes; -final int len = localIc.size(); +final FsIndex_singletype[] localIc = this.cachedSubFsLeafIndexes; +final int len = localIc.length; final int lim = Math.min(3, len); int size = 0; for (int i = 0; i < lim; i++) { - size += localIc.get(i).size(); + size += localIc[i].size(); } size += len - lim; return size; @@ -400,16 +412,21 @@ class FsIndex_iicp iterator() { createIndexIteratorCache(); -return (cachedSubFsLeafIndexes.size() == 1) +return (cachedSubFsLeafIndexes.length == 1) ? (FSIterator) fsIndex_singletype.iterator() : fsIndex_singletype.isSorted() ? new FsIterator_subtypes_ordered(this) @@ -419,7 +436,7 @@ class FsIndex_iicp iteratorUnordered() { createIndexIteratorCache(); -return (cachedSubFsLeafIndexes.size() == 1) +return (cachedSubFsLeafIndexes.length == 1) ? (FSIterator) fsIndex_singletype.iterator() : new FsIterator_aggregation_common(new FsIterator_subtypes_unordered(this).iterators, fsIndex_singletype); }
svn commit: r1742608 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java
Author: schor Date: Fri May 6 20:12:35 2016 New Revision: 1742608 URL: http://svn.apache.org/viewvc?rev=1742608&view=rev Log: [UIMA-4664] switch to OrderedFsSet_array impl, make use of 2 comparators (one with ID); insure they're == when Set (not Sorted). Remove special case of batching adds - now done by OrderedFsSet_array impl. Be explicit about use of comparator with or without ID. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java?rev=1742608&r1=1742607&r2=1742608&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_set_sorted.java Fri May 6 20:12:35 2016 @@ -19,19 +19,17 @@ package org.apache.uima.cas.impl; -import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.Iterator; import java.util.List; import java.util.NavigableSet; -import java.util.SortedSet; -import java.util.TreeSet; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.admin.FSIndexComparator; +import org.apache.uima.internal.util.OrderedFsSet_array; import org.apache.uima.jcas.cas.TOP; /** @@ -40,8 +38,6 @@ import org.apache.uima.jcas.cas.TOP; * Differences: * - Number of "equal" (but not identical) FSs: Set: 1, Sorted, N * - Iterators: Set: unordered, Sorted: ordered - * - * The FSs are kept in a TreeSet in an ordering, to permit faster searching. * * This is an index over just one type (excluding subtypes) * @@ -54,87 +50,115 @@ import org.apache.uima.jcas.cas.TOP; */ public class FsIndex_set_sorted extends FsIndex_singletype { - /** - * This impl of sorted set interface allows using the bulk add operation implemented in Java's - * TreeSet - that tests if the argument being passed in is an instance of SortedSet and does a fast insert. - */ - final private SortedSet ss = new SortedSet() { - -@Override -public int size() { return itemsToBeAdded.size(); } -@Override -public boolean isEmpty() { return false; } -@Override -public boolean contains(Object o) { throw new UnsupportedOperationException(); } -@Override -public Iterator iterator() { return itemsToBeAdded.iterator(); } -@Override -public Object[] toArray() { throw new UnsupportedOperationException(); } -@Override -public U[] toArray(U[] a) { throw new UnsupportedOperationException(); } -@Override -public boolean add(T e) { throw new UnsupportedOperationException(); } -@Override -public boolean remove(Object o) { throw new UnsupportedOperationException(); } -@Override -public boolean containsAll(Collection c) { throw new UnsupportedOperationException(); } -@Override -public boolean addAll(Collection c) { throw new UnsupportedOperationException(); } -@Override -public boolean retainAll(Collection c) { throw new UnsupportedOperationException(); } -@Override -public boolean removeAll(Collection c) { throw new UnsupportedOperationException(); } -@Override -public void clear() { throw new UnsupportedOperationException(); } -@Override -public Comparator comparator() { return comparator; } -@Override -public SortedSet subSet(FeatureStructure fromElement, FeatureStructure toElement) { throw new UnsupportedOperationException(); } -@Override -public SortedSet headSet(FeatureStructure toElement) { throw new UnsupportedOperationException(); } -@Override -public SortedSet tailSet(FeatureStructure fromElement) { throw new UnsupportedOperationException(); } -@Override -public T first() { throw new UnsupportedOperationException(); } -@Override -public T last() { throw new UnsupportedOperationException(); } - - - }; +// /** +// * This impl of sorted set interface allows using the bulk add operation implemented in Java's +// * TreeSet - that tests if the argument being passed in is an instance of SortedSet and does a fast insert. +// */ +// final private SortedSet ss = new SortedSet() { +// +//@Override +//public int size() { return itemsToBeAdded.size(); } +//@Override +//public boolean isEmpty() { return false; } +//@Override +//public boolean contains(Object o) { throw new UnsupportedOperationException(); } +//@Override +
svn commit: r1742609 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java
Author: schor Date: Fri May 6 20:15:04 2016 New Revision: 1742609 URL: http://svn.apache.org/viewvc?rev=1742609&view=rev Log: [UIMA-4674] remove unused methods; support Misc class move, don't do concurrent modification exception detection in this class - is in subclasses. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java?rev=1742609&r1=1742608&r2=1742609&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIndex_singletype.java Fri May 6 20:15:04 2016 @@ -30,8 +30,8 @@ import org.apache.uima.cas.FeatureStruct import org.apache.uima.cas.Type; import org.apache.uima.cas.admin.FSIndexComparator; import org.apache.uima.cas.admin.LinearTypeOrder; +import org.apache.uima.internal.util.Misc; import org.apache.uima.jcas.cas.TOP; -import org.apache.uima.util.Misc; /** * The common (among all index kinds - set, sorted, bag) info for an index over 1 type (excluding subtypes) @@ -64,7 +64,7 @@ public abstract class FsIndex_singletype // For each key, the comparison to use. final private boolean[] isReverse;// true = reverse, false = standard - final private TypeImpl type; // The type of this + protected final TypeImpl type; // The type of this final private int typeCode; @@ -132,9 +132,8 @@ public abstract class FsIndex_singletype * Adding FS to an index. * not in upper interfaces because it's internal use only - called via addToIndexes etc. * @param fs the fs to be added - * @return true if the fs was added, (an identical one wasn't already there) */ - abstract boolean insert(T fs); // not in upper interfaces because it's internal use only + abstract void insert(T fs); // not in upper interfaces because it's internal use only /** * @param fs - the Feature Structure to be removed. @@ -177,10 +176,6 @@ public abstract class FsIndex_singletype return this.indexType; } - public int[] getDetectIllegalIndexUpdates() { -return this.casImpl.indexRepository.detectIllegalIndexUpdates; - } - /** * @param fs1 - * @param fs2 - @@ -341,13 +336,6 @@ public abstract class FsIndex_singletype return this; } - /** - * used to see if a particular fs is in the index - * @param fs - * @return - */ - public abstract boolean containsEq(FeatureStructureImplC fs); - boolean isSetOrSorted() { return indexType == FSIndex.SET_INDEX || indexType == FSIndex.SORTED_INDEX; }
svn commit: r1742610 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java
Author: schor Date: Fri May 6 20:15:50 2016 New Revision: 1742610 URL: http://svn.apache.org/viewvc?rev=1742610&view=rev Log: [UIMA-4674] minor performance tweaks. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java?rev=1742610&r1=1742609&r2=1742610&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_aggregation_common.java Fri May 6 20:15:50 2016 @@ -42,7 +42,7 @@ import org.apache.uima.cas.Type; class FsIterator_aggregation_common implements LowLevelIterator { - final private FSIterator[] iterators; + final private FSIterator[] iterators; // not just for single-type iterators private int lastValidIndex; @@ -117,7 +117,7 @@ class FsIterator_aggregation_common it = iterators[lastValidIndex]; -it.moveToNext(); +it.moveToNextNvc(); if (it.isValid()) { return; @@ -161,8 +161,14 @@ class FsIterator_aggregation_common it = iterators[lastValidIndex]; -it.moveToPrevious(); +it.moveToPreviousNvc(); if (it.isValid()) { return;
svn commit: r1742612 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java
Author: schor Date: Fri May 6 20:17:36 2016 New Revision: 1742612 URL: http://svn.apache.org/viewvc?rev=1742612&view=rev Log: [UIMA-4674] remove unused methods; change to concurrent modification exception detection, minor perf tweaks Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java?rev=1742612&r1=1742611&r2=1742612&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java Fri May 6 20:17:36 2016 @@ -34,10 +34,11 @@ class FsIterator_bag fsBagIndex; // just an optimization, is == to fsLeafIndexImpl from super class, allows dispatch w/o casting - FsIterator_bag(FsIndex_bag fsBagIndex, int[] detectIllegalIndexUpdates, int typeCode) { -super(detectIllegalIndexUpdates, typeCode, null); + FsIterator_bag(FsIndex_bag fsBagIndex, TypeImpl ti) { +super(ti, null); // null: null comparator for bags this.fsBagIndex = fsBagIndex; // need for copy() bag = (ObjHashSet) fsBagIndex.getObjHashSet(); +resetConcurrentModification(); moveToFirst(); } @@ -119,6 +120,13 @@ class FsIterator_bag copy() { -FsIterator_bag copy = new FsIterator_bag(this.fsBagIndex, this.detectIllegalIndexUpdates, this.typeCode); +FsIterator_bag copy = new FsIterator_bag(this.fsBagIndex, this.ti); copy.position = position; copy.isGoingForward = isGoingForward; return copy; @@ -154,5 +162,14 @@ class FsIterator_bag
svn commit: r1742613 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted.java
Author: schor Date: Fri May 6 20:23:14 2016 New Revision: 1742613 URL: http://svn.apache.org/viewvc?rev=1742613&view=rev Log: [UIMA-4664] change to concurrent mod detection, add moveToPrevious without isValid check, be explicit about which comparator is being used Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted.java?rev=1742613&r1=1742612&r2=1742613&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted.java Fri May 6 20:23:14 2016 @@ -25,16 +25,20 @@ import java.util.NavigableSet; import java.util.NoSuchElementException; import org.apache.uima.cas.FeatureStructure; +import org.apache.uima.internal.util.OrderedFsSet_array; import org.apache.uima.jcas.cas.TOP; +/** + * @param the type of FSs being returned from the iterator, supplied by the calling context + */ class FsIterator_set_sorted extends FsIterator_singletype { // We use TOP instead of T because the // signature of getting a "matching" element limits the type to the declared type, and // in UIMA we can use, say an Annotation instance as a moveTo arg, for a navSet of some subtype of Annotation. - final private NavigableSet navSet; // == fsSortIndex.getNavigableSet() + final private NavigableSet navSet; // == fsSortIndex.getNavigableSet() - final private FsIndex_set_sorted fsSetSortIndex; + final private FsIndex_set_sorted fsSetSortIndex; // only for ll_getIndex, backwards compatibility private T currentElement; @@ -50,13 +54,14 @@ class FsIterator_set_sorted iterator; + private Iterator iterator; // changes according to direction, starting point, etc. - FsIterator_set_sorted(FsIndex_set_sorted fsSetSortIndex, int[] detectIllegalIndexUpdates, int typeCode, Comparator comp) { -super(detectIllegalIndexUpdates, typeCode, comp); + FsIterator_set_sorted(FsIndex_set_sorted fsSetSortIndex, TypeImpl ti, Comparator comp) { +super(ti, comp); this.fsSetSortIndex = fsSetSortIndex; -this.navSet = (NavigableSet) fsSetSortIndex.getNavigableSet(); +this.navSet = (NavigableSet) fsSetSortIndex.getNavigableSet(); // cast to TOP to allow keys outside of range of returned values iterator = (Iterator) navSet.iterator(); // can't use fsSortIndex.iterator - that recursively calls this +resetConcurrentModification(); // follow create of iterator, which, in turn, does any pending batch processing } @Override @@ -64,16 +69,18 @@ class FsIterator_set_sorted) navSet.iterator(); +//fsSetSortIndex.maybeProcessBulkAdds(); +iterator = (Iterator) navSet.iterator(); // in case iterator was reverse, etc. +resetConcurrentModification(); // follow create of iterator, which, in turn, does any pending batch processing isGoingForward = true; isCurrentElementFromLastGet = false; } @Override public void moveToLast() { -resetConcurrentModification(); +//fsSetSortIndex.maybeProcessBulkAdds(); iterator = (Iterator) navSet.descendingIterator(); +resetConcurrentModification(); // follow create of iterator, which, in turn, does any pending batch processing isGoingForward = false; isCurrentElementFromLastGet = false; } @@ -88,7 +95,7 @@ class FsIterator_set_sorted) navSet.tailSet(currentElement, false).iterator(); + iterator = (Iterator) navSet.tailSet((TOP)currentElement, false).iterator(); isGoingForward = true; isCurrentElementFromLastGet = false; } @@ -114,8 +121,14 @@ class FsIterator_set_sorted) navSet.headSet(currentElement, false).descendingIterator(); + iterator = (Iterator) navSet.headSet((TOP)currentElement, false).descendingIterator(); isGoingForward = false; isCurrentElementFromLastGet = false; } @@ -140,7 +153,7 @@ class FsIterator_set_sorted copy() { -return new FsIterator_set_sorted(this.fsSetSortIndex, this.detectIllegalIndexUpdates, typeCode, this.comparator); +return new FsIterator_set_sorted(this.fsSetSortIndex, ti, this.comparator); } /** @@ -178,39 +191,58 @@ class FsIterator_set_sorted it = (Iterator) navSet.headSet(fs, false).descendingIterator(); - +currentElement = null; +//fsSetSortIndex.maybeProcessBulkAdds(); // not needed, always done due to previous size() call when creating iterator +Iterator it = (Iterator) navSet.headSet(fs, false).desce
svn commit: r1742614 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_singletype.java
Author: schor Date: Fri May 6 20:24:28 2016 New Revision: 1742614 URL: http://svn.apache.org/viewvc?rev=1742614&view=rev Log: [UIMA-4664] change to concurrent mod detection Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_singletype.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_singletype.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_singletype.java?rev=1742614&r1=1742613&r2=1742614&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_singletype.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_singletype.java Fri May 6 20:24:28 2016 @@ -13,14 +13,14 @@ public abstract class FsIterator_singlet private int modificationSnapshot; // to catch illegal modifications - /** - * This is a ref to the shared value in the FSIndexRepositoryImpl - * OR it may be null which means skip the checking (done for some internal routines - * which know they are not updating the index, and assume no other thread is) - */ - final protected int[] detectIllegalIndexUpdates; // shared copy with Index Repository +// /** +// * This is a ref to the shared value in the FSIndexRepositoryImpl +// * OR it may be null which means skip the checking (done for some internal routines +// * which know they are not updating the index, and assume no other thread is) +// */ +// final protected int[] detectIllegalIndexUpdates; // shared copy with Index Repository - protected final int typeCode; // needed for the detect concurrent modification + protected final TypeImpl ti; /** * The generic type is FeatureStructure to allow comparing between @@ -29,23 +29,27 @@ public abstract class FsIterator_singlet */ final protected Comparator comparator; - public FsIterator_singletype(int[] detectConcurrentMods, int typeCode, Comparator comparator){ + public FsIterator_singletype(TypeImpl ti, Comparator comparator){ this.comparator = comparator; -this.detectIllegalIndexUpdates = detectConcurrentMods; -this.typeCode = typeCode; -resetConcurrentModification(); +//this.detectIllegalIndexUpdates = detectConcurrentMods; +this.ti = ti; +//resetConcurrentModification(); // can't do here, each subtype must finish it's initialization first // subtypes do moveToFirst after they finish initialization } - + + protected abstract int getModificationCountFromIndex(); + final protected > I checkConcurrentModification() { -if ((null != detectIllegalIndexUpdates) && (modificationSnapshot != detectIllegalIndexUpdates[typeCode])) { +if (modificationSnapshot != getModificationCountFromIndex()) { +//if ((null != detectIllegalIndexUpdates) && (modificationSnapshot != detectIllegalIndexUpdates[typeCode])) { throw new ConcurrentModificationException(); } return (I) this; } protected void resetConcurrentModification() { -this.modificationSnapshot = (null == this.detectIllegalIndexUpdates) ? 0 : this.detectIllegalIndexUpdates[typeCode]; +this.modificationSnapshot = // (null == this.detectIllegalIndexUpdates) ? 0 : this.detectIllegalIndexUpdates[typeCode]; + getModificationCountFromIndex(); } @Override @@ -61,9 +65,9 @@ public abstract class FsIterator_singlet @Override public String toString() { -Type type = this.ll_getIndex().getType(); +Type type = ti; StringBuilder sb = new StringBuilder(this.getClass().getSimpleName()).append(":").append(System.identityHashCode(this)); -sb.append(" over Type: ").append(type.getName()).append(":").append(typeCode); +sb.append(" over Type: ").append(type.getName()).append(":").append(ti.getCode()); sb.append(", size: ").append(this.ll_indexSize()); return sb.toString(); }
svn commit: r1742616 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: FSIndexRepositoryImpl.java FsIterator_subtypes.java
Author: schor Date: Fri May 6 20:33:34 2016 New Revision: 1742616 URL: http://svn.apache.org/viewvc?rev=1742616&view=rev Log: [UIMA-4674] remove redundant empty fs iterator definition Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java?rev=1742616&r1=1742615&r2=1742616&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java Fri May 6 20:33:34 2016 @@ -1390,7 +1390,7 @@ public class FSIndexRepositoryImpl imple getAllIndexedFS(type, iteratorList); final int iteratorListSize = iteratorList.size(); if (iteratorListSize == 0) { - return (LowLevelIterator) FsIterator_subtypes.FS_ITERATOR_EMPTY; + return (LowLevelIterator) LowLevelIterator.FS_ITERATOR_LOW_LEVEL_EMPTY; } if (iteratorListSize == 1) { return iteratorList.get(0); Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes.java?rev=1742616&r1=1742615&r2=1742616&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes.java Fri May 6 20:33:34 2016 @@ -51,31 +51,6 @@ public abstract class FsIterator_subtype public int ll_indexSize() { return ll_getIndex().size(); } - - final static FsIterator_subtypes FS_ITERATOR_EMPTY = new FsIterator_subtypes(null) { -@Override -public boolean isValid() {return false;} -@Override -public TOP get() throws NoSuchElementException { throw new NoSuchElementException(); } -@Override -public TOP getNvc() { throw new NoSuchElementException(); } -@Override -public void moveToNext() {} -@Override -public void moveToNextNvc() {} -@Override -public void moveToPrevious() {} -@Override -public void moveToFirst() {} -@Override -public void moveToLast() {} -@Override -public void moveTo(FeatureStructure fs) {} -@Override -public FSIterator copy() { return this; } -@Override -public int ll_indexSize() { return 0; } - }; @Override public String toString() {
svn commit: r1742617 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_list.java
Author: schor Date: Fri May 6 20:34:28 2016 New Revision: 1742617 URL: http://svn.apache.org/viewvc?rev=1742617&view=rev Log: [UIMA-4664] convert cache from arraylist to array. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_list.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_list.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_list.java?rev=1742617&r1=1742616&r2=1742617&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_list.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_list.java Fri May 6 20:34:28 2016 @@ -47,15 +47,25 @@ public abstract class FsIterator_subtype // subsequently ignored - same effect private FsIterator_singletype[] initIterators() { iicp.createIndexIteratorCache(); -final ArrayList> cachedSubIndexes = iicp.cachedSubFsLeafIndexes; +final FsIndex_singletype[] cachedSubIndexes = iicp.cachedSubFsLeafIndexes; -FsIterator_singletype[] r = cachedSubIndexes.stream() -.filter(leafIndex -> leafIndex.size() > 0) // filter out empty ones -.map( index -> index.iterator()) // map fsIndex_singletype to an iterator over that -.toArray(FsIterator_singletype[]::new); +//FsIterator_singletype[] r = cachedSubIndexes.stream() +//.filter(leafIndex -> leafIndex.size() > 0) // filter out empty ones +//.map( index -> index.iterator()) // map fsIndex_singletype to an iterator over that +//.toArray(FsIterator_singletype[]::new); +ArrayList> r = new ArrayList<>(); +for (FsIndex_singletype leafIndex : iicp.cachedSubFsLeafIndexes) { + if (leafIndex.size() == 0) { +continue; + } + r.add((FsIterator_singletype) leafIndex.iterator()); +} + // if all are empty, put the first one in (to avoid handling 0 as a special case) -return (r.length != 0) ? r : new FsIterator_singletype[] {(FsIterator_singletype) cachedSubIndexes.get(0).iterator()}; +return (r.size() != 0) + ? r.toArray(new FsIterator_singletype[r.size()]) + : new FsIterator_singletype[] {(FsIterator_singletype) cachedSubIndexes[0].iterator()}; } /* (non-Javadoc) @@ -63,7 +73,11 @@ public abstract class FsIterator_subtype */ @Override public int ll_indexSize() { -return Arrays.stream(iterators).mapToInt(it -> it.ll_getIndex().size()).sum(); +int sz = 0; +for (FsIterator_singletype it : iterators) { + sz += it.ll_getIndex().size(); +} +return sz; } }
svn commit: r1742618 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java
Author: schor Date: Fri May 6 20:35:36 2016 New Revision: 1742618 URL: http://svn.apache.org/viewvc?rev=1742618&view=rev Log: [UIMA-4674] add moveToPreviousNvc method, moved Misc class Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java?rev=1742618&r1=1742617&r2=1742618&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_ordered.java Fri May 6 20:35:36 2016 @@ -24,6 +24,7 @@ import java.util.NoSuchElementException; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.FeatureStructure; +import org.apache.uima.internal.util.Misc; /** * Performs an ordered iteration among a set of iterators, each one corresponding to @@ -185,6 +186,11 @@ public class FsIterator_subtypes_ordered return; } +moveToPreviousNvc(); + } + + @Override + public void moveToPreviousNvc() { final FsIterator_singletype it0 = iterators[0].checkConcurrentModification(); if (!this.wentForward) { it0.moveToPrevious();
svn commit: r1742619 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: FsIterator_subtypes_snapshot.java FsIterator_subtypes_unordered.java
Author: schor Date: Fri May 6 20:36:12 2016 New Revision: 1742619 URL: http://svn.apache.org/viewvc?rev=1742619&view=rev Log: [UIMA-4674] add moveToPreviousNvc method Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_unordered.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java?rev=1742619&r1=1742618&r2=1742619&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java Fri May 6 20:36:12 2016 @@ -98,6 +98,11 @@ public class FsIterator_subtypes_snapsho pos--; } } + + @Override + public void moveToPreviousNvc() { +pos--; + } /* (non-Javadoc) * @see org.apache.uima.cas.FSIterator#moveToFirst() Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_unordered.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_unordered.java?rev=1742619&r1=1742618&r2=1742619&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_unordered.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_unordered.java Fri May 6 20:36:12 2016 @@ -50,6 +50,8 @@ public class FsIterator_subtypes_unorder @Override public void moveToPrevious() {throw new UnsupportedOperationException();} @Override + public void moveToPreviousNvc() {throw new UnsupportedOperationException();} + @Override public void moveToFirst() {} // can't throw, should be a no-op. @Override public void moveToLast() {throw new UnsupportedOperationException();}
svn commit: r1742620 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java
Author: schor Date: Fri May 6 20:37:01 2016 New Revision: 1742620 URL: http://svn.apache.org/viewvc?rev=1742620&view=rev Log: [UIMA-4674] add moveToPreviousNvc method Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java?rev=1742620&r1=1742619&r2=1742620&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java Fri May 6 20:37:01 2016 @@ -97,6 +97,8 @@ public interface LowLevelIterator
svn commit: r1742621 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Id2FS.java
Author: schor Date: Fri May 6 20:42:30 2016 New Revision: 1742621 URL: http://svn.apache.org/viewvc?rev=1742621&view=rev Log: [UIMA-4674] tweak - when walking the list, replace empty weakrefs with nulls Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Id2FS.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Id2FS.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Id2FS.java?rev=1742621&r1=1742620&r2=1742621&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Id2FS.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Id2FS.java Fri May 6 20:42:30 2016 @@ -24,8 +24,8 @@ import java.util.ArrayList; import java.util.function.Consumer; import org.apache.uima.cas.CASRuntimeException; +import org.apache.uima.internal.util.Misc; import org.apache.uima.jcas.cas.TOP; -import org.apache.uima.util.Misc; /** * A map from ints representing FS id's (or "addresses") to those FSs @@ -50,7 +50,7 @@ public class Id2FS { */ public static final String DISABLE_FS_GC = "uima.disable_feature_structure_garbage_collection"; - private static final boolean IS_DISABLE_FS_GC = true || // debug + public static final boolean IS_DISABLE_FS_GC = // true || // debug Misc.getNoValueSystemProperty(DISABLE_FS_GC); final private ArrayList id2fsw; @@ -72,6 +72,9 @@ public class Id2FS { } public void replaceWithStrongRef(TOP fs) { +if (IS_DISABLE_FS_GC) { + return; +} id2fsw.set(fs._id, fs); } @@ -154,11 +157,21 @@ public class Id2FS { // } //} // in this impl, the id is the index. -for (Object o : id2fsw.subList(fromId, id2fsw.size())) { - TOP fs = (o == null) ? null - : (o instanceof TOP) ? (TOP) o -: (TOP) ((WeakReference)o).get(); - if (null != fs) { +final int sz = id2fsw.size(); +for (int i = fromId; i < sz; i++) { + Object o = id2fsw.get(i); + if (o == null) { +continue; + } + + if (o instanceof TOP) { +action.accept((TOP)o); + } else { +TOP fs = ((WeakReference)o).get(); +if (fs == null) { + id2fsw.set(i, null); + continue; +} action.accept(fs); } }
svn commit: r1742622 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java
Author: schor Date: Fri May 6 20:43:54 2016 New Revision: 1742622 URL: http://svn.apache.org/viewvc?rev=1742622&view=rev Log: [UIMA-4674] add some @Override annotations, tweak generic types, add moveToPreviousNvc method Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java?rev=1742622&r1=1742621&r2=1742622&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/Subiterator.java Fri May 6 20:43:54 2016 @@ -76,7 +76,7 @@ public class Subiterator it; + private final FSIterator it; private final FSIndexRepositoryImpl fsIndexRepo; @@ -128,7 +128,7 @@ public class Subiterator) it; this.boundingAnnotation = this.isBounded ? (Annotation) boundingAnnotation : null; this.boundingBegin = (boundingAnnotation == null) ? boundingBegin : boundingAnnotation.getBegin(); this.boundingEnd = (boundingAnnotation == null) ? boundingEnd : boundingAnnotation.getEnd(); @@ -161,7 +161,7 @@ public class Subiterator annotationComparator = getAnnotationComparator(); +Comparator annotationComparator = getAnnotationComparator(); while (isValid() && (0 == annotationComparator.compare(boundingAnnotation, it.get( { it.moveToNext(); } } - private Comparator getAnnotationComparator() { + private Comparator getAnnotationComparator() { return fsIndexRepo.getAnnotationFsComparator(); } @@ -223,7 +223,7 @@ public class Subiterator annotationComparator = getAnnotationComparator(); + Comparator annotationComparator = getAnnotationComparator(); pos = Collections.binarySearch(this.list, (Annotation) fs, annotationComparator); if (pos >= 0) { if (!isValid()) { @@ -558,7 +564,7 @@ public class Subiterator copy() { Subiterator copy = new Subiterator( -this.it.copy(), this.boundingAnnotation, this.boundingBegin, this.boundingEnd, this.ambiguous, this.strict, this.isBounded, this.fsIndexRepo); +(FSIterator) this.it.copy(), this.boundingAnnotation, this.boundingBegin, this.boundingEnd, this.ambiguous, this.strict, this.isBounded, this.fsIndexRepo); copy.list = this.list; // non-final things copy.pos = this.pos; return copy;
svn commit: r1742625 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java
Author: schor Date: Fri May 6 20:48:41 2016 New Revision: 1742625 URL: http://svn.apache.org/viewvc?rev=1742625&view=rev Log: [UIMA-4674] change the typeCode and friends to a short (this limits the number of types to 32767), in order to increase locality of reference. removed unused booleans. Change allSuperTypes to array, and staticMergedFeaturesList, staticMergedIntFeaturesList, and staticMergedRefFeaturesList, to Array. support arrays of typed FSs Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java?rev=1742625&r1=1742624&r2=1742625&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java Fri May 6 20:48:41 2016 @@ -36,7 +36,9 @@ import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.admin.CASAdminException; import org.apache.uima.cas.impl.SlotKinds.SlotKind; -import org.apache.uima.util.Misc; +import org.apache.uima.internal.util.Misc; +import org.apache.uima.jcas.cas.CommonArray; +import org.apache.uima.jcas.cas.TOP; /** * The implementation of types in the type system. @@ -55,9 +57,9 @@ public class TypeImpl implements Type, C private final String name;// x.y.Foo private final String shortName; // Foo - private final int typeCode; // subtypes always have typecodes > this one and < typeCodeNextSibling - private int depthFirstCode; // assigned at commit time - private int depthFirstNextSibling; // for quick subsumption testing, set at commit time + private final short typeCode; // subtypes always have typecodes > this one and < typeCodeNextSibling + private short depthFirstCode; // assigned at commit time + private short depthFirstNextSibling; // for quick subsumption testing, set at commit time private final TypeSystemImpl tsi ; // the Type System instance this type belongs to. // This means that built-in types have multiple instances, so this field can vary. @@ -92,6 +94,19 @@ public class TypeImpl implements Type, C * true for FSarrays non-arrays having 1 or more refs to FSs */ boolean hasRefFeature; // true for FSarrays non-arrays having 1 or more refs to FSs +// /** +// * true if only has int slots, no ref slots +// */ +// boolean hasOnlyInts; +// /** +// * true if only has ref slots, no int slots +// */ +// boolean hasOnlyRefs; +// +// /** +// * true if has no int or data slots +// */ +// boolean hasNoSlots; /* * type hierarchy */ @@ -100,23 +115,26 @@ public class TypeImpl implements Type, C /** * All supertypes, in order, starting with immediate (nearest) supertype */ - private final List allSuperTypes = new ArrayList<>(); + private final TypeImpl[] allSuperTypes; private final List directSubtypes = new ArrayList<>(); // Features * private final Map staticMergedFeatures = new LinkedHashMap<>(1); // set to null at commit time - private final List staticMergedFeaturesList = new ArrayList<>(0); // set after commit + private FeatureImpl[] staticMergedFeaturesList = null; // set after commit private final List staticMergedFeaturesIntroducedByThisType = new ArrayList<>(0); /** * Map from adjusted offset in int features to feature + * Corrects for Long/Double values taking 2 int slots + * Set at commit time */ - private final List staticMergedIntFeaturesList = new ArrayList<>(0); + private FeatureImpl[] staticMergedIntFeaturesList; /** * Map from adjusted offset in ref features to feature + * Set at commit time */ - private final List staticMergedRefFeaturesList = new ArrayList<>(0); + private FeatureImpl[] staticMergedRefFeaturesList; /** * The number of used slots needed = total number of features minus those represented by fields in JCas cover classes @@ -145,6 +163,7 @@ public class TypeImpl implements Type, C //setter_funct_intfc_class = null; slotKind = TypeSystemImpl.getSlotKindFromType(this); +this.allSuperTypes = null; } /** @@ -170,20 +189,26 @@ public class TypeImpl implements Type, C this.isFeatureFinal = false; this.isLongOrDouble = name.equals(CAS.TYPE_NAME_LONG) || name.equals(CAS.TYPE_
svn commit: r1742626 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_array.java
Author: schor Date: Fri May 6 20:50:01 2016 New Revision: 1742626 URL: http://svn.apache.org/viewvc?rev=1742626&view=rev Log: [UIMA-4674] support arrays of typed FSs Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_array.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_array.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_array.java?rev=1742626&r1=1742625&r2=1742626&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_array.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_array.java Fri May 6 20:50:01 2016 @@ -19,7 +19,6 @@ package org.apache.uima.cas.impl; -import org.apache.uima.cas.Type; import org.apache.uima.cas.impl.SlotKinds.SlotKind; public class TypeImpl_array extends TypeImpl implements TypeSystemConstants { @@ -94,24 +93,31 @@ public class TypeImpl_array extends Type // xxx[] is the supertype of FSArray // (this second relation because all we can generate are instances of FSArray // and we must be able to assign them to xxx[] ) +// *** Correction: there is a way to generate instances of xxx[] - via ll_createArray and CASImpl.createTempArray *** final TypeImpl superType = this; final int superTypeCode = getCode(); if (superTypeCode == fsArrayTypeCode) { - return !subType.isPrimitiveArrayType(); + return !subType.isPrimitiveArrayType();// primitive } if (subType.getCode() == fsArrayTypeCode) { - return superTypeCode == arrayBaseTypeCode || + return superTypeCode == arrayBaseTypeCode || // this subsumes FSArray only if this is arrayBaseTypeCode, or +// this is some Array of specific FSs (seems wrong) !isPrimitiveArrayType(); } -// at this point, we could have arrays of other primitive types, or -// arrays of specific types: xxx[] - -// If both types are arrays, simply compare the components. +// at this point, the super type and the subtype are +// both arrays, +// not fsArrays +// not equal + +if (superType.isPrimitiveArrayType() || subType.isPrimitiveArrayType()) { + return false; +} + return getComponentType().subsumes(subType.getComponentType()); //} else if (isSubArray) { @@ -121,4 +127,15 @@ public class TypeImpl_array extends Type //} } + + /** + * @return true if this array type is a subtype of FSArray over a specific feature structure (other than TOP, or + * one of the primitives) + */ + @Override + public boolean isTypedFsArray() { +return componentType.isRefType && + componentType.getCode() != fsArrayTypeCode && + componentType.getCode() != topTypeCode; + } }
svn commit: r1742627 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_primitive.java
Author: schor Date: Fri May 6 20:50:31 2016 New Revision: 1742627 URL: http://svn.apache.org/viewvc?rev=1742627&view=rev Log: no jira, comment change Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_primitive.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_primitive.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_primitive.java?rev=1742627&r1=1742626&r2=1742627&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_primitive.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_primitive.java Fri May 6 20:50:31 2016 @@ -32,7 +32,7 @@ public class TypeImpl_primitive extends @Override public boolean subsumes(TypeImpl ti) { -return ti == this; // primitives don't subsume any other type except itself +return ti == this; // primitives don't subsume any other type except itself, except for string / stringsubtype (overrides) } }
svn commit: r1742628 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_string.java
Author: schor Date: Fri May 6 20:54:50 2016 New Revision: 1742628 URL: http://svn.apache.org/viewvc?rev=1742628&view=rev Log: [UIMA-4674] string subtypes only subsume themselves. Strings (not string subtypes) subsume string subtypes. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_string.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_string.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_string.java?rev=1742628&r1=1742627&r2=1742628&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_string.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl_string.java Fri May 6 20:54:50 2016 @@ -37,4 +37,12 @@ public class TypeImpl_string extends Typ return true; } + @Override + public boolean subsumes(TypeImpl ti) { +if (this.isStringSubtype()) { + return this == ti; // a string subtype only can subsume itself +} +return ti.isStringOrStringSubtype(); + } + }
svn commit: r1742629 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemConstants.java
Author: schor Date: Fri May 6 20:56:00 2016 New Revision: 1742629 URL: http://svn.apache.org/viewvc?rev=1742629&view=rev Log: [UIMA-4673] reorg type systems constants into separate interface, which can then be added to any class to ref the values without prefix Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemConstants.java Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemConstants.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemConstants.java?rev=1742629&view=auto == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemConstants.java (added) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemConstants.java Fri May 6 20:56:00 2016 @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.uima.cas.impl; + +import org.apache.uima.cas.CAS; + +/** + * This interface defines static final constants for Type Systems + * For the built-in types and features: + * - the type and feature codes + * - the adjOffsets + * + */ +public interface TypeSystemConstants { + + /** + * built-in type codes + **/ + // Code of root of hierarchy (will be 1 with current implementation) + static final int topTypeCode = 1; + static final int intTypeCode = 2; + static final int floatTypeCode = 3; + static final int stringTypeCode = 4; + static final int arrayBaseTypeCode = 5; + static final int fsArrayTypeCode = 6; + static final int floatArrayTypeCode = 7; + static final int intArrayTypeCode = 8; + static final int stringArrayTypeCode = 9; + // 10 list base + static final int fsListTypeCode = 11; // 11 fs list + static final int fsEListTypeCode = 12;// 12 empty fs list + static final int fsNeListTypeCode = 13;// 13 non-empty fs list + static final int floatListTypeCode = 14; // 14 float list + static final int floatEListTypeCode = 15;// 15 empty float list + static final int floatNeListTypeCode = 16; // 16 non-empty float list + static final int intListTypeCode = 17; // 17 integer list + static final int intEListTypeCode = 18; // 18 empty integer list + static final int intNeListTypeCode = 19; // 19 non-empty integer list + static final int stringListTypeCode = 20; // 20 string list + static final int stringEListTypeCode = 21; // 21 empty string list + static final int stringNeListTypeCode = 22; // 22 non-empty string list + + static final int booleanTypeCode = 23; + static final int byteTypeCode = 24; + static final int shortTypeCode = 25; + static final int longTypeCode = 26; + static final int doubleTypeCode = 27; + static final int booleanArrayTypeCode = 28; + static final int byteArrayTypeCode = 29; + static final int shortArrayTypeCode = 30; + static final int longArrayTypeCode = 31; + static final int doubleArrayTypeCode = 32; + static final int sofaTypeCode = 33; + static final int annotBaseTypeCode = 34; + static final int annotTypeCode = 35; + static final int docTypeCode = 36; // DocumentAnnotation + static final int javaObjectTypeCode = 37; + static final int javaObjectArrayTypeCode = 38; + + /** + * Static final constants for built-in features + */ + static final int sofaNumFeatCode = 9; // ref from another pkg + static final int sofaIdFeatCode = 10; + static final int sofaStringFeatCode = 13; + static final int sofaMimeFeatCode = 11; + static final int sofaUriFeatCode = 14; + static final int sofaArrayFeatCode = 12; + static final int annotBaseSofaFeatCode = 15; // ref from another pkg + static final int beginFeatCode = 16; + static final int endFeatCode = 17; + static final int langFeatCode = 18; + + /** + * adjOffsets for builtin Features + */ + static final TypeSystemImpl staticTsi = TypeSys
svn commit: r1742630 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystem2Xml.java
Author: schor Date: Fri May 6 20:57:13 2016 New Revision: 1742630 URL: http://svn.apache.org/viewvc?rev=1742630&view=rev Log: [UIMA-4674] clarify this class doesn't serialize built-ins or arrays of typed FSs. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystem2Xml.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystem2Xml.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystem2Xml.java?rev=1742630&r1=1742629&r2=1742630&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystem2Xml.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystem2Xml.java Fri May 6 20:57:13 2016 @@ -22,6 +22,7 @@ package org.apache.uima.cas.impl; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -44,7 +45,7 @@ import org.xml.sax.SAXException; */ public class TypeSystem2Xml { /** - * Converts a TypeSystem object to XML + * Converts a TypeSystem object to XML. Built-in types and array types are not included. * * @param aTypeSystem * the TypeSystem to convert @@ -93,7 +94,7 @@ public class TypeSystem2Xml { typeDesc.setSupertypeName(superType.getName()); LowLevelTypeSystem llts = aTypeSystem.getLowLevelTypeSystem(); List featDescs = new ArrayList(); - Iterator featIterator = type.getFeatureImpls().iterator(); + Iterator featIterator = Arrays.asList(type.getFeatureImpls()).iterator(); while (featIterator.hasNext()) { Feature feat = featIterator.next(); if (!feat.getDomain().equals(type)) {
svn commit: r1742631 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java
Author: schor Date: Fri May 6 21:07:08 2016 New Revision: 1742631 URL: http://svn.apache.org/viewvc?rev=1742631&view=rev Log: [UIMA-4673] Misc class move, support for array values for some type impl things. Add new check to prevent adding array type of specific FS after type system commit (to avoid then using this type as a name in a call to get an index over that type - that would fail because the iterator cache may have already been set up for that index, without this new added-after-type-system-commit type. Add support for deserializing xmi / xcas arrays, where the receiving type system defines these values in the type system as being an array of a specific type - replace the more general type with the more specific type. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java?rev=1742631&r1=1742630&r2=1742631&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java Fri May 6 21:07:08 2016 @@ -65,6 +65,7 @@ import org.apache.uima.cas.admin.CASAdmi import org.apache.uima.cas.admin.TypeSystemMgr; import org.apache.uima.cas.impl.FSClassRegistry.JCasClassInfo; import org.apache.uima.cas.impl.SlotKinds.SlotKind; +import org.apache.uima.internal.util.Misc; import org.apache.uima.jcas.JCasRegistry; import org.apache.uima.jcas.cas.AnnotationBase; import org.apache.uima.jcas.cas.BooleanArray; @@ -92,7 +93,6 @@ import org.apache.uima.jcas.cas.StringAr import org.apache.uima.jcas.cas.StringList; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.jcas.tcas.Annotation; -import org.apache.uima.util.Misc; import com.strobel.assembler.metadata.Buffer; import com.strobel.assembler.metadata.ITypeLoader; @@ -160,7 +160,7 @@ public class TypeSystemImpl implements T // private static final int INVALID_TYPE_CODE = 0; private static final int LEAST_FEATURE_CODE = 1; - private static final String ARRAY_TYPE_SUFFIX = "[]"; + static final String ARRAY_TYPE_SUFFIX = "[]"; /** * HEAP_STORED_ARRAY flag is kept for ser/deserialization compatibility @@ -302,7 +302,7 @@ public class TypeSystemImpl implements T final TypeImpl_javaObject javaObjectType; // for Map, List, etc. final TypeImpl_array javaObjectArrayType; // for arrays of these - final TypeImpl listBaseType; + final TypeImpl listBaseType; public final TypeImpl_list intListType; public final TypeImpl_list floatListType; public final TypeImpl_list stringListType; @@ -358,9 +358,9 @@ public class TypeSystemImpl implements T * value is the corresponding TypeImpl * * When multiple type systems are being initialized in parallel, this list maybe updated - * on different threads. Access to it is synchronized. + * on different threads. Access to it is synchronized on the object itself */ - private final List jcasRegisteredTypes = Collections.synchronizedList(new ArrayList<>(INIT_SIZE_ARRAYS_BUILT_IN_TYPES)); + private final List jcasRegisteredTypes = new ArrayList<>(INIT_SIZE_ARRAYS_BUILT_IN_TYPES); /** * An ArrayList, unsynchronized, indexed by feature code, of FeatureImpl objects */ @@ -900,7 +900,9 @@ public class TypeSystemImpl implements T * @return */ static SlotKind getSlotKindFromType(Type rangeType) { -SlotKind slotKind = slotKindsForNonArrays.get(rangeType.getName()); +SlotKind slotKind = rangeType.isStringOrStringSubtype() + ? Slot_StrRef + : slotKindsForNonArrays.get(rangeType.getName()); return (null == slotKind) ? Slot_HeapRef : slotKind; } @@ -1059,7 +1061,7 @@ public class TypeSystemImpl implements T } if (superType.isArray()) { - return ((TypeImpl_array)superType).subsumes((TypeImpl)subType); + return ((TypeImpl_array)superType).subsumes((TypeImpl)subType); // doesn't need to be committed } if (subType == fsArrayType) { @@ -1067,9 +1069,6 @@ public class TypeSystemImpl implements T superType == arrayBaseType; } -// at this point, we could have arrays of other primitive types, or -// arrays of specific types: xxx[] - if (subType.isArray()) { // If the subtype is an array, and the supertype is not, then the // supertype must be top, or the abstract array base. @@ -1079,7 +1078,6 @@
svn commit: r1742632 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: XCASDeserializer.java XCASSerializer.java XmiCasDeserializer.java XmiCasSerializer.
Author: schor Date: Fri May 6 21:11:59 2016 New Revision: 1742632 URL: http://svn.apache.org/viewvc?rev=1742632&view=rev Log: [UIMA-4673] Misc class move, support for array values for some type impl things. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java Fri May 6 21:11:59 2016 @@ -32,13 +32,13 @@ import org.apache.uima.cas.FSIndexReposi import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.StringUtils; import org.apache.uima.internal.util.rb_trees.RedBlackTree; import org.apache.uima.jcas.cas.CommonPrimitiveArray; import org.apache.uima.jcas.cas.FSArray; import org.apache.uima.jcas.cas.Sofa; import org.apache.uima.jcas.cas.TOP; -import org.apache.uima.util.Misc; import org.xml.sax.Attributes; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; @@ -886,6 +886,9 @@ public class XCASDeserializer { } return; } + + // handle case where feature is xyz[] (an array ref, not primitive) but the value of fs is FSArray + ts.fixupFSArrayTypes(fi.getRangeImpl(), fsInfo.fs); fs.setFeatureValue(fi, fsInfo.fs); } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java Fri May 6 21:11:59 2016 @@ -508,12 +508,15 @@ public class XCASSerializer { } private void encodeFSArray(FSArray fs, AttributesImpl attrs) throws SAXException { - final String typeName = fs._typeImpl.getName(); + String typeName = fs._typeImpl.getName(); final int size = fs.size(); // int pos = cas.getArrayStartAddress(fs_id); // xmlStack.addAttribute(ARRAY_SIZE_ATTR, Integer.toString(size)); // xmlStack.commitNode(); addAttribute(attrs, ARRAY_SIZE_ATTR, Integer.toString(size)); + if (typeName.endsWith(TypeSystemImpl.ARRAY_TYPE_SUFFIX)) { +typeName = CASImpl.TYPE_NAME_FS_ARRAY; + } startElement(typeName, attrs, size); for (int i = 0; i < size; i++) { String val = null; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java?rev=1742632&r1=1742631&r2=1742632&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java Fri May 6 21:11:59 2016 @@ -49,6 +49,7 @@ import org.apache.uima.cas.impl.XmiSeria import org.apache.uima.cas.impl.XmiSerializationSharedData.OotsElementData; import org.apache.uima.internal.util.I18nUtil; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.XmlAttribute; import org.apache.uima.internal.util.XmlElementName; import org.apache.uima.internal.util.XmlElementNameAndContents; @@ -64,7 +65,6 @@ import org.apache.uima.jcas.cas.NonEmpty import org
svn commit: r1742634 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
Author: schor Date: Fri May 6 21:22:45 2016 New Revision: 1742634 URL: http://svn.apache.org/viewvc?rev=1742634&view=rev Log: [UIMA-4897] add tracing support for Feature Structure creation and update. Misc class move. Add measure support for how ll_setIntValue is being used. Change some internal data structures to more efficient ones. support explicit disabling of autocorruption check - used by deserializing. Add support for V2 backwards compatibility for ll_setIntValue which does strange things (e.g. changing the type of an existing FS, getting / setting "handles" to string/long/double values, etc. Clean up array creation to allow for creating typed FS arrays. use type system constants to allow removing class name qualifiers from constants. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1742634&r1=1742633&r2=1742634&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Fri May 6 21:22:45 2016 @@ -19,9 +19,12 @@ package org.apache.uima.cas.impl; +import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; @@ -30,6 +33,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.BitSet; +import java.util.HashMap; import java.util.HashSet; import java.util.IdentityHashMap; import java.util.Iterator; @@ -39,7 +43,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; - import org.apache.uima.UIMAFramework; import org.apache.uima.UIMARuntimeException; import org.apache.uima.cas.AbstractCas_ImplBase; @@ -78,10 +81,12 @@ import org.apache.uima.cas.admin.FSIndex import org.apache.uima.cas.admin.FSIndexRepositoryMgr; import org.apache.uima.cas.admin.TypeSystemMgr; import org.apache.uima.cas.impl.FSsTobeAddedback.FSsTobeAddedbackSingle; +import org.apache.uima.cas.impl.SlotKinds.SlotKind; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.cas.text.Language; -import org.apache.uima.internal.util.Int2ObjHashMap; +import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.PositiveIntSet; import org.apache.uima.internal.util.PositiveIntSet_impl; import org.apache.uima.jcas.JCas; @@ -107,7 +112,6 @@ import org.apache.uima.jcas.cas.TOP; import org.apache.uima.jcas.impl.JCasImpl; import org.apache.uima.jcas.tcas.Annotation; import org.apache.uima.util.Level; -import org.apache.uima.util.Misc; /** * Implements the CAS interfaces. This class must be public because we need to @@ -117,11 +121,28 @@ import org.apache.uima.util.Misc; */ public class CASImpl extends AbstractCas_ImplBase implements CAS, CASMgr, LowLevelCAS, TypeSystemConstants { - private static final boolean trace = false; - + private static final boolean trace = false; // debug + public static final boolean traceFSs = false; // debug - trace FS creation and update + private static final String traceFile = "traceFSs.log.txt"; + private static final PrintStream traceOut; + static { +try { + if (traceFSs) { +System.out.println("Creating traceFSs file in directory " + System.getProperty("user.dir")); +traceOut = traceFSs ? new PrintStream(new BufferedOutputStream(new FileOutputStream(traceFile, false))) : null; + } else { +traceOut = null; + } +} catch (Exception e) { + throw new RuntimeException(e); +} + } + + private static final boolean MEASURE_SETINT = false; + // debug static final AtomicInteger casIdProvider = new AtomicInteger(0); - + // Notes on the implementation // --- @@ -189,6 +210,10 @@ public class CASImpl extends AbstractCas !IS_REPORT_FS_UPDATE_CORRUPTS_INDEX && !IS_THROW_EXCEPTION_CORRUPT_INDEX; +// private static final int REF_DATA_FOR_ALLOC_SIZE = 1024; +// private static final int INT_DATA_FOR_ALLOC_SIZE = 1024; +// + // this next seemingly non-sensical static block // is to force the classe
svn commit: r1742635 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
Author: schor Date: Fri May 6 21:23:37 2016 New Revision: 1742635 URL: http://svn.apache.org/viewvc?rev=1742635&view=rev Log: [UIMA-4670] additional msgs Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?rev=1742635&r1=1742634&r2=1742635&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Fri May 6 21:23:37 2016 @@ -588,6 +588,7 @@ GET_CLASS_FOR_TYPE_BEFORE_TS_COMMIT = Ca CAS_MISSING_FS = The CAS doesn''t have a Feature Structure whose ID is {0}; it may have been garbage collected. INVALID_FS_ID = The Feature Structure ID {0} is invalid. TYPESYSTEMS_NOT_COMMITTED = Type Systems must be committed before calling this method. +ADD_ARRAY_TYPE_AFTER_TS_COMMITTED = Can''t add an array type "{0}" to the type system after the type system has been committed. # # Serialization / deserialization runtime exceptions
svn commit: r1742637 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java
Author: schor Date: Fri May 6 21:25:56 2016 New Revision: 1742637 URL: http://svn.apache.org/viewvc?rev=1742637&view=rev Log: [UIMA-4666] jcas gen'd versions of test classes updated Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java?rev=1742637&r1=1742636&r2=1742637&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java Fri May 6 21:25:56 2016 @@ -94,7 +94,7 @@ public class LanguagePair extends TOP { * @param v value to set into the feature */ public void setLang1(String v) { -_setStringValueNfc(_getFeatFromAdjOffset(_FI_lang1, false), v); +_setStringValueNfc(_FI_lang1, v); } @@ -113,7 +113,7 @@ public class LanguagePair extends TOP { * @param v value to set into the feature */ public void setLang2(String v) { -_setStringValueNfc(_getFeatFromAdjOffset(_FI_lang2, false), v); +_setStringValueNfc(_FI_lang2, v); } @@ -132,7 +132,7 @@ public class LanguagePair extends TOP { * @param v value to set into the feature */ public void setDescription(String v) { -_setStringValueNfc(_getFeatFromAdjOffset(_FI_description, false), v); +_setStringValueNfc(_FI_description, v); } }
svn commit: r1742636 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java: aa/AbstractType.java aa/ConcreteType.java aa/MissingFeatureInCas.java aa/Root.java x/y/z/Sentence.java x/y/z
Author: schor Date: Fri May 6 21:25:33 2016 New Revision: 1742636 URL: http://svn.apache.org/viewvc?rev=1742636&view=rev Log: [UIMA-4666] jcas gen'd versions of test classes updated Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/Root.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/Sentence.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/Token.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java?rev=1742636&r1=1742635&r2=1742636&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java Fri May 6 21:25:33 2016 @@ -92,7 +92,7 @@ public class AbstractType extends TOP { * @param v value to set into the feature */ public void setAbstractInt(int v) { -_setIntValueNfc(_getFeatFromAdjOffset(_FI_abstractInt, true), v); +_setIntValueNfc(_FI_abstractInt, v); } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java?rev=1742636&r1=1742635&r2=1742636&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java Fri May 6 21:25:33 2016 @@ -91,7 +91,7 @@ public class ConcreteType extends Abstra * @param v value to set into the feature */ public void setConcreteString(String v) { -_setStringValueNfc(_getFeatFromAdjOffset(_FI_concreteString, false), v); +_setStringValueNfc(_FI_concreteString, v); } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java?rev=1742636&r1=1742635&r2=1742636&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java Fri May 6 21:25:33 2016 @@ -94,7 +94,7 @@ public class MissingFeatureInCas extends * @param v value to set into the feature */ public void setHaveThisOne(int v) { -_setIntValueNfc(_getFeatFromAdjOffset(_FI_haveThisOne, true), v); +_setIntValueNfc(_FI_haveThisOne, v); } @@ -113,7 +113,7 @@ public class MissingFeatureInCas extends * @param v value to set into the feature */ public void setMissingThisOne(float v) { -_setFloatValueNfc(_getFeatFromAdjOffset(_FI_missingThisOne, true), v); +_setFloatValueNfc(_FI_missingThisOne, v); } @@ -132,7 +132,7 @@ public class MissingFeatureInCas extends * @param v value to set into the feature */ public void setChangedFType(String v) { -_setStringValueNfc(_getFeatFromAdjOffset(_FI_changedFType, false), v); +_setStringValueNfc(_FI_changedFType, v); } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/Root.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/Root.java?rev=1742636&r1=1742635&r2=1742636&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/Root.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/Root.java Fri May 6 21:25:33 2016 @@ -103,7 +103,7 @@ public class Root extends TOP { * @param v value to set into the feature */ public void setArrayInt(IntegerArray v) { -_setFeatureValueNcWj(_getFeatFromAdjOffset(_FI_arrayInt, false), v); +_setFeatureValueNcWj(_FI_arrayInt, v); } @@ -139,7 +139,7 @@ public class Root extends TOP { * @param v value to set into the feature */ public void setArrayRef(FSArray v) { -_setFeatureValueNcWj(_getFeatFromAdjOffset(_FI_arrayR
svn commit: r1742638 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java
Author: schor Date: Fri May 6 21:27:12 2016 New Revision: 1742638 URL: http://svn.apache.org/viewvc?rev=1742638&view=rev Log: [UIMA-4674] Misc class move, add (disabled) test for looping processmanyagg - for tuning. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java?rev=1742638&r1=1742637&r2=1742638&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/MultiprocessingAnalysisEngine_implTest.java Fri May 6 21:27:12 2016 @@ -35,6 +35,7 @@ import org.apache.uima.analysis_engine.m import org.apache.uima.analysis_engine.metadata.impl.FixedFlow_impl; import org.apache.uima.cas.CAS; import org.apache.uima.cas.TypeSystem; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.MultiThreadUtils; import org.apache.uima.internal.util.MultiThreadUtils.ThreadM; import org.apache.uima.resource.ResourceSpecifier; @@ -293,6 +294,14 @@ public class MultiprocessingAnalysisEngi } } + // rename to run this in a loop + public void tstLoopProcessManyAgg() throws Exception { +XMLInputSource in = new XMLInputSource("src/test/resources/ExampleTae/SimpleTestAggregate.xml"); +ResourceSpecifier specifier = +UIMAFramework.getXMLParser().parseResourceSpecifier(in); +Misc.timeLoops("ProcessManyAgg", 1000, () -> processMany(specifier)); + } + final int NUM_THREADS = Math.min(50, Runtime.getRuntime().availableProcessors() * 5); final int NUM_INSTANCES = (int)(NUM_THREADS * .7);
svn commit: r1742639 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl: AnalysisEngineDescription_implTest.java AnalysisEngineManagementImplTes
Author: schor Date: Fri May 6 21:30:35 2016 New Revision: 1742639 URL: http://svn.apache.org/viewvc?rev=1742639&view=rev Log: [UIMA-4674] Misc class move, Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineManagementImplTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java?rev=1742639&r1=1742638&r2=1742639&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineDescription_implTest.java Fri May 6 21:30:35 2016 @@ -42,6 +42,7 @@ import org.apache.uima.analysis_engine.m import org.apache.uima.cas.CAS; import org.apache.uima.flow.FlowControllerDescription; import org.apache.uima.flow.impl.FlowControllerDescription_impl; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.MultiThreadUtils; import org.apache.uima.internal.util.SerializationUtils; import org.apache.uima.resource.ConfigurationManager; @@ -83,11 +84,9 @@ import org.apache.uima.test.junit_extens import org.apache.uima.util.CasCreationUtils; import org.apache.uima.util.InvalidXMLException; import org.apache.uima.util.Logger; -import org.apache.uima.util.Misc; import org.apache.uima.util.XMLInputSource; import org.apache.uima.util.XMLParser; -import junit.framework.Assert; import junit.framework.TestCase; /** Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineManagementImplTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineManagementImplTest.java?rev=1742639&r1=1742638&r2=1742639&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineManagementImplTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/AnalysisEngineManagementImplTest.java Fri May 6 21:30:35 2016 @@ -23,8 +23,8 @@ import java.util.Random; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.MultiThreadUtils; -import org.apache.uima.util.Misc; import junit.framework.TestCase;
svn commit: r1742640 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/sequencer/SequencerFixedTest.java
Author: schor Date: Fri May 6 21:31:33 2016 New Revision: 1742640 URL: http://svn.apache.org/viewvc?rev=1742640&view=rev Log: [UIMA-4674] add some tracing flush Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/sequencer/SequencerFixedTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/sequencer/SequencerFixedTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/sequencer/SequencerFixedTest.java?rev=1742640&r1=1742639&r2=1742640&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/sequencer/SequencerFixedTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/analysis_engine/impl/sequencer/SequencerFixedTest.java Fri May 6 21:31:33 2016 @@ -25,6 +25,7 @@ import org.apache.uima.UIMAFramework; import org.apache.uima.analysis_engine.AnalysisEngine; import org.apache.uima.analysis_engine.ResultSpecification; import org.apache.uima.cas.CAS; +import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.resource.ResourceSpecifier; import org.apache.uima.test.junit_extension.FileCompare; import org.apache.uima.test.junit_extension.JUnitExtension; @@ -92,10 +93,10 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); - + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); -} finally { +} finally { // Destroy the CAS, releasing resources. if (ae != null) { ae.destroy(); @@ -136,7 +137,7 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); - + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); } finally { @@ -180,6 +181,7 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); } finally { @@ -223,6 +225,7 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); } finally { @@ -266,6 +269,7 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); } finally { @@ -309,6 +313,7 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); } finally { @@ -352,6 +357,7 @@ public class SequencerFixedTest extends Assert.assertTrue(FileCompare.compare(outputReferenceFile, JUnitExtension .getFile("SequencerTest/SequencerFixedExpected.txt"))); outputReferenceFile.delete(); + ((CASImpl)cas).traceFSflush(); } catch (Exception ex) { JUnitExtension.handleException(ex); } finally {
svn commit: r1742641 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima: internal/util/MiscTest.java internal/util/UIMAClassLoaderTest.java pear/util/PearRuntimeTest
Author: schor Date: Fri May 6 21:37:51 2016 New Revision: 1742641 URL: http://svn.apache.org/viewvc?rev=1742641&view=rev Log: [UIMA-4674] Misc class move, change some arraylist to arrays Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/MiscTest.java - copied, changed from r1730941, uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/MiscTest.java Removed: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/MiscTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/UIMAClassLoaderTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/pear/util/PearRuntimeTest.java Copied: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/MiscTest.java (from r1730941, uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/MiscTest.java) URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/MiscTest.java?p2=uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/MiscTest.java&p1=uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/MiscTest.java&r1=1730941&r2=1742641&rev=1742641&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/MiscTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/MiscTest.java Fri May 6 21:37:51 2016 @@ -1,6 +1,6 @@ -package org.apache.uima.util; +package org.apache.uima.internal.util; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; import org.junit.Test; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/UIMAClassLoaderTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/UIMAClassLoaderTest.java?rev=1742641&r1=1742640&r2=1742641&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/UIMAClassLoaderTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/internal/util/UIMAClassLoaderTest.java Fri May 6 21:37:51 2016 @@ -26,7 +26,6 @@ import java.net.URL; import org.apache.uima.UIMAFramework; import org.apache.uima.resource.ResourceManager; import org.apache.uima.test.junit_extension.JUnitExtension; -import org.apache.uima.util.Misc; import junit.framework.TestCase; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/pear/util/PearRuntimeTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/pear/util/PearRuntimeTest.java?rev=1742641&r1=1742640&r2=1742641&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/pear/util/PearRuntimeTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/pear/util/PearRuntimeTest.java Fri May 6 21:37:51 2016 @@ -40,7 +40,6 @@ import org.apache.uima.resource.metadata import org.apache.uima.resource.metadata.MetaDataObject; import org.apache.uima.test.junit_extension.JUnitExtension; -import junit.framework.Assert; import junit.framework.TestCase; /**
svn commit: r1742643 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java: aa/ org/apache/lang/ org/apache/uima/examples/ org/apache/uima/testTypeSystem_arrays/ sofa/test/ x/y/z/
Author: schor Date: Fri May 6 21:41:02 2016 New Revision: 1742643 URL: http://svn.apache.org/viewvc?rev=1742643&view=rev Log: [UIMA-4666] update new JCasgen classes, remove unused imports Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingInCas.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/Root.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/lang/LanguagePair.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/examples/SourceDocumentInformation.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfShorts.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/testTypeSystem_arrays/OfStrings.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/sofa/test/CrossAnnotation.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/EndOfSentence.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/Sentence.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/Separator.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/Token.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/TokenType.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/x/y/z/Word.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java?rev=1742643&r1=1742642&r2=1742643&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/AbstractType.java Fri May 6 21:41:02 2016 @@ -8,10 +8,8 @@ package aa; 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.JCas; import org.apache.uima.jcas.JCasRegistry; - - import org.apache.uima.jcas.cas.TOP; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java?rev=1742643&r1=1742642&r2=1742643&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/ConcreteType.java Fri May 6 21:41:02 2016 @@ -8,7 +8,7 @@ package aa; 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.JCas; import org.apache.uima.jcas.JCasRegistry; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java?rev=1742643&r1=1742642&r2=1742643&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingFeatureInCas.java Fri May 6 21:41:02 2016 @@ -8,10 +8,8 @@ package aa; 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.JCas; import org.apache.uima.jcas.JCasRegistry; - - import org.apache.uima.jcas.cas.TOP; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingInCas.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingInCas.java?rev=1742643&r1=1742642&r2=1742643&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingInCas.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/aa/MissingInCas.java Fri May 6
svn commit: r1742644 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima: cas/impl/ cas_data/impl/ jcas/test/
Author: schor Date: Fri May 6 21:43:47 2016 New Revision: 1742644 URL: http://svn.apache.org/viewvc?rev=1742644&view=rev Log: [UIMA-4674] Misc class move, remove unused imports, features as arrays Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/Id2FSTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas_data/impl/CasComparer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/jcas/test/JCasTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java?rev=1742644&r1=1742643&r2=1742644&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasPoolTest.java Fri May 6 21:43:47 2016 @@ -33,12 +33,12 @@ import org.apache.uima.cas.TypeSystem; import org.apache.uima.impl.ChildUimaContext_impl; import org.apache.uima.impl.RootUimaContext_impl; import org.apache.uima.impl.UimaContext_ImplBase; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.MultiThreadUtils; import org.apache.uima.resource.CasManager; import org.apache.uima.resource.ResourceInitializationException; import org.apache.uima.test.junit_extension.JUnitExtension; import org.apache.uima.util.InvalidXMLException; -import org.apache.uima.util.Misc; import org.apache.uima.util.XMLInputSource; import org.apache.uima.util.XMLizable; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java?rev=1742644&r1=1742643&r2=1742644&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java Fri May 6 21:43:47 2016 @@ -30,7 +30,6 @@ import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.FSIterator; import org.apache.uima.cas.TypeSystem; import org.apache.uima.cas.admin.FSIndexComparator; -import org.apache.uima.internal.util.IntPointerIterator; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.resource.metadata.FsIndexDescription; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/Id2FSTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/Id2FSTest.java?rev=1742644&r1=1742643&r2=1742644&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/Id2FSTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/Id2FSTest.java Fri May 6 21:43:47 2016 @@ -78,7 +78,7 @@ public class Id2FSTest extends TestCase } catch (LowLevelException e) { caught = true; } - assertTrue(caught); + assertTrue( Id2FS.IS_DISABLE_FS_GC || caught); } Id2FS id2fs = new Id2FS(200); @@ -101,10 +101,12 @@ public class Id2FSTest extends TestCase // remove 20 of them System.gc(); Thread.sleep(10); // in case gc needs time to finish -for (int i = 0; i < 19; i++) { // last TOP is held by cas.svd.cache_not_in_index - TOP fs = id2fs.get(i + 2); - assertNull(fs); -} +if (!Id2FS.IS_DISABLE_FS_GC) { + for (int i = 0; i < 19; i++) { // last TOP is held by cas.svd.cache_not_in_index +TOP fs = id2fs.get(i + 2); +assertNull(fs); + } +} } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/XCASDeserializerTest.ja
svn commit: r1742646 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/CasCopierTest.java
Author: schor Date: Fri May 6 21:44:40 2016 New Revision: 1742646 URL: http://svn.apache.org/viewvc?rev=1742646&view=rev Log: [UIMA-4674] update test for cas copier after making it follow v2 in copying subtypes of AnnotationBase into the specified view from the sofa reference. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/CasCopierTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/CasCopierTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/CasCopierTest.java?rev=1742646&r1=1742645&r2=1742646&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/CasCopierTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/util/CasCopierTest.java Fri May 6 21:44:40 2016 @@ -335,7 +335,6 @@ public class CasCopierTest extends TestC // test with using base cas -// Note that in v3, you cannot create subtypes of AnnotationBase in the base CAS destCas = CasCreationUtils.createCas(typeSystem, new TypePriorities_impl(), indexes); destCas.setDocumentText(srcCas.getDocumentText()); copier = new CasCopier(((CASImpl)srcCas).getBaseCAS(), ((CASImpl)destCas).getBaseCAS()); @@ -347,9 +346,8 @@ public class CasCopierTest extends TestC copy = copier.copyFs(annot); } catch (CASRuntimeException e) { wascaught = true; - assertEquals(e.getMessageKey(), CASRuntimeException.DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS); } -assertTrue(wascaught); +assertFalse(wascaught); // verify copy CasComparer.assertEquals(annot, copy); }
svn commit: r1742648 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test: CrossAnnotation.java Sentence.java Token.java
Author: schor Date: Fri May 6 21:48:54 2016 New Revision: 1742648 URL: http://svn.apache.org/viewvc?rev=1742648&view=rev Log: [UIMA-4666] update new JCasgen classes, remove unused imports Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java?rev=1742648&r1=1742647&r2=1742648&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CrossAnnotation.java Fri May 6 21:48:54 2016 @@ -8,10 +8,8 @@ package org.apache.uima.cas.test; 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.JCas; import org.apache.uima.jcas.JCasRegistry; - - import org.apache.uima.jcas.tcas.Annotation; @@ -92,7 +90,7 @@ public class CrossAnnotation extends Ann * @param v value to set into the feature */ public void setOtherAnnotation(Annotation v) { -_setFeatureValueNcWj(_getFeatFromAdjOffset(_FI_otherAnnotation, false), v); +_setFeatureValueNcWj(_FI_otherAnnotation, v); } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java?rev=1742648&r1=1742647&r2=1742648&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Sentence.java Fri May 6 21:48:54 2016 @@ -7,11 +7,8 @@ package org.apache.uima.cas.test; 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.JCas; import org.apache.uima.jcas.JCasRegistry; - - import org.apache.uima.jcas.tcas.Annotation; Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java?rev=1742648&r1=1742647&r2=1742648&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/Token.java Fri May 6 21:48:54 2016 @@ -7,11 +7,8 @@ package org.apache.uima.cas.test; 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.JCas; import org.apache.uima.jcas.JCasRegistry; - - import org.apache.uima.jcas.tcas.Annotation;
svn commit: r1742649 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTst.java
Author: schor Date: Fri May 6 21:49:54 2016 New Revision: 1742649 URL: http://svn.apache.org/viewvc?rev=1742649&view=rev Log: [UIMA-4674] remove unused imports, features as arrays Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTst.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTst.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTst.java?rev=1742649&r1=1742648&r2=1742649&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTst.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/CasTypeSystemMapperTst.java Fri May 6 21:49:54 2016 @@ -18,10 +18,9 @@ */ package org.apache.uima.cas.impl; +import java.util.Arrays; import java.util.BitSet; -import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; import org.apache.uima.cas.CAS; @@ -316,8 +315,8 @@ public class CasTypeSystemMapperTst exte * @param tCode */ private void chkfeats(CasTypeSystemMapper m, TypeImpl srcType, TypeImpl tgtType) { -Set srcFeats = new HashSet<>(srcType.getFeatureImpls()); -Set tgtFeats = new HashSet<>(tgtType.getFeatureImpls()); +Set srcFeats = new HashSet<>(Arrays.asList(srcType.getFeatureImpls())); +Set tgtFeats = new HashSet<>(Arrays.asList(tgtType.getFeatureImpls())); assertTrue(srcFeats.equals(tgtFeats)); } @@ -333,12 +332,12 @@ public class CasTypeSystemMapperTst exte TypeImpl srcType = m.tsSrc.getTypeForCode(tCode); TypeImpl tgtType = m.tsTgt.get().getTypeForCode(tCode); -List tgtFeats = tgtType.getFeatureImpls(); +FeatureImpl[] tgtFeats = tgtType.getFeatureImpls(); for (int j = 0, mf = 1; - j < tgtFeats.size(); + j < tgtFeats.length; j++, mf = mf<<1) { - FeatureImpl tgtFeat = tgtFeats.get(j); + FeatureImpl tgtFeat = tgtFeats[j]; if ((mFeats & mf) == mf) { // if the feature is supposed to be missing assertEquals(null, m.getSrcFeature(tgtType, tgtFeat)); continue; @@ -360,12 +359,12 @@ public class CasTypeSystemMapperTst exte TypeImpl srcType = m.tsSrc.getTypeForCode(tCode); TypeImpl tgtType = m.tsTgt.get().getTypeForCode(tCode); -List srcFeats = srcType.getFeatureImpls(); +FeatureImpl[] srcFeats = srcType.getFeatureImpls(); for (int j = 0, mf = 1; - j < srcFeats.size(); + j < srcFeats.length; j++, mf = mf<<1) { - FeatureImpl srcFeat = srcFeats.get(j); + FeatureImpl srcFeat = srcFeats[j]; if ((mFeats & mf) == mf) { // if the feature is supposed to be missing assertEquals(null, m.getTgtFeature(srcType, srcFeat)); continue;
svn commit: r1742650 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CASTestSetup.java
Author: schor Date: Fri May 6 21:51:19 2016 New Revision: 1742650 URL: http://svn.apache.org/viewvc?rev=1742650&view=rev Log: [UIMA-4674] add more kinds of features - double, long. Add intArrayType Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CASTestSetup.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CASTestSetup.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CASTestSetup.java?rev=1742650&r1=1742649&r2=1742650&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CASTestSetup.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/CASTestSetup.java Fri May 6 21:51:19 2016 @@ -72,9 +72,12 @@ public class CASTestSetup implements An + SENT_LEN_FEAT; public static final String TOKEN_FLOAT_FEAT = "tokenFloatFeat"; + public static final String TOKEN_DOUBLE_FEAT = "tokenDoubleFeat"; + public static final String TOKEN_LONG_FEAT = "tokenLongFeat"; - public static final String TOKEN_FLOAT_FEAT_Q = TOKEN_TYPE + TypeSystem.FEATURE_SEPARATOR - + TOKEN_FLOAT_FEAT; + public static final String TOKEN_FLOAT_FEAT_Q = TOKEN_TYPE + TypeSystem.FEATURE_SEPARATOR + TOKEN_FLOAT_FEAT; + public static final String TOKEN_DOUBLE_FEAT_Q = TOKEN_TYPE + TypeSystem.FEATURE_SEPARATOR + TOKEN_DOUBLE_FEAT; + public static final String TOKEN_LONG_FEAT_Q = TOKEN_TYPE + TypeSystem.FEATURE_SEPARATOR + TOKEN_LONG_FEAT; public static final String LEMMA_LIST_FEAT = "lemmaList"; @@ -120,17 +123,23 @@ public class CASTestSetup implements An /* Types: * TOP - * Token TOKEN_TYPE - * Word - * Separator - * EndOfSentence + * token_type_type + * Word_type + * Sep_type + * EOS_type * ArrayFSwithSubtype * Annotation - * Sentence - * + * Sentence [SEN_LEN_FEAT(int) + * Token TOKEN_TYPE [TOKEN_TYPE_FEAT(TOKEN_TYPE_TYPE), TOKEN_FLOAT_FEAT, LEMMA_FEAT(string), LEMMA_LIST_FEAT[stringArray] + * String + * Group1 + * Group2 + * Lang_pair [LANG1(Group1), LANG2(Group2), DESCR_FEAT(string) */ public void initTypeSystem(TypeSystemMgr tsm) { // Add new types and features. +Type stringType = tsm.getType(CAS.TYPE_NAME_STRING); + Type topType = tsm.getTopType(); Type annotType = tsm.getType(CAS.TYPE_NAME_ANNOTATION); // assert(annotType != null); @@ -145,13 +154,15 @@ public class CASTestSetup implements An tsm.addType(EOS_TYPE, tokenTypeType); tsm.addFeature(TOKEN_TYPE_FEAT, tokenType, tokenTypeType); tsm.addFeature(TOKEN_FLOAT_FEAT, tokenType, tsm.getType(CAS.TYPE_NAME_FLOAT)); +tsm.addFeature(TOKEN_DOUBLE_FEAT, tokenType, tsm.getType(CAS.TYPE_NAME_DOUBLE)); +tsm.addFeature(TOKEN_LONG_FEAT, tokenType, tsm.getType(CAS.TYPE_NAME_LONG)); // Add a type that inherits from IntArray. // tsm.addType(INT_ARRAY_SUB, tsm.getType(CAS.TYPE_NAME_INTEGER_ARRAY)); // tsm.addFeature( // INT_SUB_NAME, // tsm.getType(INT_ARRAY_SUB), // tsm.getType(CAS.TYPE_NAME_STRING)); -tsm.addFeature(LEMMA_FEAT, tokenType, tsm.getType(CAS.TYPE_NAME_STRING)); +tsm.addFeature(LEMMA_FEAT, tokenType, stringType); tsm.addFeature(SENT_LEN_FEAT, tsm.getType(SENT_TYPE), tsm.getType(CAS.TYPE_NAME_INTEGER)); tsm.addFeature(LEMMA_LIST_FEAT, tsm.getType(TOKEN_TYPE), tsm .getType(CAS.TYPE_NAME_STRING_ARRAY)); @@ -160,7 +171,6 @@ public class CASTestSetup implements An Type langPair = tsm.addType(LANG_PAIR, topType); tsm.addFeature(LANG1, langPair, group1); tsm.addFeature(LANG2, langPair, group2); -Type stringType = tsm.getType(CAS.TYPE_NAME_STRING); tsm.addFeature(DESCR_FEAT, langPair, stringType); boolean exc = false; try { @@ -178,6 +188,9 @@ public class CASTestSetup implements An exc = true; } TestCase.assertTrue(exc); +// add IntegerArray[] type before commit for testArrayTypes in TypeSystemTest +Type intArrayType = tsm.getType(CAS.TYPE_NAME_INTEGER_ARRAY); +Type arrayOfIntArray = tsm.getArrayType(intArrayType); } public void initIndexes(FSIndexRepositoryMgr irm, TypeSystem ts) {
svn commit: r1742651 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/GrowingTheCasTest.java
Author: schor Date: Fri May 6 21:52:52 2016 New Revision: 1742651 URL: http://svn.apache.org/viewvc?rev=1742651&view=rev Log: [UIMA-4674] add disabled cas copier performance test Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/GrowingTheCasTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/GrowingTheCasTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/GrowingTheCasTest.java?rev=1742651&r1=1742650&r2=1742651&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/GrowingTheCasTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/GrowingTheCasTest.java Fri May 6 21:52:52 2016 @@ -183,6 +183,91 @@ public class GrowingTheCasTest extends T jcas= null; } + public void tstCasCopierPerf() { +// Properties props = System.getProperties(); +// for (Map.Entry es : props.entrySet()) { +//System.out.format("JVM Prop %s: %s%n", es.getKey(), es.getValue()); +// } + +// System.out.format("JVM total memory: %,d, JVM Max Mem: %,d%n", Runtime.getRuntime().totalMemory(), Runtime.getRuntime().maxMemory()); + File textFile = JUnitExtension.getFile("data/moby.txt"); + String text = null; + try { +text = FileUtils.file2String(textFile, "utf-8"); + } catch (IOException e) { +e.printStackTrace(); +assertTrue(false); + } + StringBuffer buf = new StringBuffer(text.length() * 10); + for (int i = 0; i < 10; i++) { +buf.append(text); + } + jcas = null; + try { +jcas = this.ae.newJCas(); + } catch (ResourceInitializationException e) { +e.printStackTrace(); +assertTrue(false); + } + text = buf.toString(); + jcas.setDocumentText(text); + int numberOfSentences = 0; + int numberOfTokens = 0; + try { +//long time = System.currentTimeMillis(); +this.ae.process(jcas); +//time = System.currentTimeMillis() - time; +//System.out.println("Time for large CAS: " + new TimeSpan(time)); +numberOfSentences = jcas.getAnnotationIndex(Sentence.type).size(); +numberOfTokens = jcas.getAnnotationIndex(Token.type).size(); +System.out.println("Moby * 10, nbr of sentences = " + numberOfSentences); +System.out.println("Moby * 10, nbr of tokens = " + numberOfTokens); + } catch (AnalysisEngineProcessException e) { +e.printStackTrace(); +assertTrue(false); + } + +// // performance testing of "unordered" iterators +// for (int i = 0; i < 10; i++) { +//timeIt(i); +// } + + // performance testing of CasCopier + + // create a destination CAS + CAS destCas; + try { +destCas = this.ae.newCAS(); + } catch (ResourceInitializationException e) { +e.printStackTrace(); +assertTrue(false); +return; // to avoid compile problems + } + CAS srcCas = jcas.getCas(); + + CasCopier copier; + // do the copy + long shortest = Long.MAX_VALUE; + int i = 0; + for (; i < 200; i++) { // uncomment for perf test. was more than 5x faster than version 2.6.0 +destCas.reset(); +long startTime = System.nanoTime(); +copier = new CasCopier(srcCas, destCas); +copier.copyCasView(srcCas, true); +long time = (System.nanoTime() - startTime)/ 1000; +if (time < shortest) { + shortest = time; + System.out.format("CasCopier speed for Moby is %,d microseconds on iteration %,d%n", shortest, i); +} + } + + // verify copy + CasComparer.assertEquals(srcCas, destCas); + +// ((JCasImpl)jcas).showJfsFromCaddrHistogram(); + jcas= null; +} + private void timeIt(int i) { FSIterator it = jcas.getIndexRepository().getAllIndexedFS(jcas.getCasType(Annotation.type)); int c = 0;
svn commit: r1742656 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/NewPrimitiveTypesTest.java
Author: schor Date: Fri May 6 22:11:46 2016 New Revision: 1742656 URL: http://svn.apache.org/viewvc?rev=1742656&view=rev Log: no jira - add comments Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/NewPrimitiveTypesTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/NewPrimitiveTypesTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/NewPrimitiveTypesTest.java?rev=1742656&r1=1742655&r2=1742656&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/NewPrimitiveTypesTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/NewPrimitiveTypesTest.java Fri May 6 22:11:46 2016 @@ -381,14 +381,14 @@ public class NewPrimitiveTypesTest exten // clone it AnnotationFS clone = (AnnotationFS) fs.clone(); -// subsitute the clone for the original in the index, +// substitute the clone for the original in the index, // and validate that it was correctly copied englishView.removeFsFromIndexes(fs); englishView.addFsToIndexes(clone); validateFSData(cas); // editing the original FS should not change the clone -englishView.removeFsFromIndexes(fs); +englishView.removeFsFromIndexes(fs); // does nothing, is not in the index, the clone is fs.setStringValue(stringFeature, "foo"); fs.setFloatValue(floatFeature, -1f); fs.setByteValue(byteFeature, (byte) -1); @@ -397,7 +397,7 @@ public class NewPrimitiveTypesTest exten fs.setLongValue(longFeature, -1); fs.setDoubleValue(doubleFeature, -1); fs.setBegin(clone.getBegin() + 1); // to be sure that fs is beyond the original -englishView.addFsToIndexes(fs); +englishView.addFsToIndexes(fs); // will add, is no longer "equal" to the clone validateFSData(cas); }
svn commit: r1742657 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java
Author: schor Date: Fri May 6 22:12:36 2016 New Revision: 1742657 URL: http://svn.apache.org/viewvc?rev=1742657&view=rev Log: [UIMA-4666] update new JCasgen classes, remove unused imports Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java?rev=1742657&r1=1742656&r2=1742657&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/StringSubtypeAnnotation.java Fri May 6 22:12:36 2016 @@ -8,10 +8,8 @@ package org.apache.uima.cas.test; 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.JCas; import org.apache.uima.jcas.JCasRegistry; - - import org.apache.uima.jcas.tcas.Annotation; @@ -92,7 +90,7 @@ public class StringSubtypeAnnotation ext * @param v value to set into the feature */ public void setStringSetFeature(String v) { -_setStringValueNfc(_getFeatFromAdjOffset(_FI_stringSetFeature, false), v); +_setStringValueNfc(_FI_stringSetFeature, v); } }
svn commit: r1742658 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/TypeSystemTest.java
Author: schor Date: Fri May 6 22:13:45 2016 New Revision: 1742658 URL: http://svn.apache.org/viewvc?rev=1742658&view=rev Log: [UIMA-4674] add test for serializing parameterized type array Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/TypeSystemTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/TypeSystemTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/TypeSystemTest.java?rev=1742658&r1=1742657&r2=1742658&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/TypeSystemTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/TypeSystemTest.java Fri May 6 22:13:45 2016 @@ -429,6 +429,10 @@ public class TypeSystemTest extends Test assertTrue(this.ts.subsumes(annotType, tokenType)); assertTrue(!this.ts.subsumes(tokenType, annotType)); assertTrue(!this.ts.subsumes(tokenType, top)); + +Type stringType = this.ts.getType(CAS.TYPE_NAME_STRING); +Type substringType = this.ts.getType(CASTestSetup.GROUP_1); +assertTrue(this.ts.subsumes(stringType, substringType)); } /** @@ -552,6 +556,46 @@ public class TypeSystemTest extends Test assertTrue(false); } } + + public void testSerializeParameterizedArrayTypeSystem() { + +ByteArrayOutputStream os = new ByteArrayOutputStream(); +try { + TypeSystem2Xml.typeSystem2Xml(ts, os); +} catch (SAXException e) { + assertTrue(false); +} catch (IOException e) { + assertTrue(false); +} +try { + os.close(); +} catch (IOException e) { + assertTrue(false); +} +InputStream is = new ByteArrayInputStream(os.toByteArray()); +//System.out.println(os.toString()); +XMLInputSource xis = new XMLInputSource(is, new File(".")); +Object descriptor = null; +try { + descriptor = UIMAFramework.getXMLParser().parse(xis); +} catch (InvalidXMLException e) { + assertTrue(false); +} +// instantiate CAS to get type system. Also build style +// map file if there is none. +TypeSystemDescription tsDesc = (TypeSystemDescription) descriptor; +try { + tsDesc.resolveImports(); +} catch (InvalidXMLException e) { + assertTrue(false); +} +try { + CasCreationUtils.createCas(tsDesc, null, new FsIndexDescription[] {}); +} catch (ResourceInitializationException e) { + assertTrue(false); +} + } + public static void main(String[] args) { junit.textui.TestRunner.run(TypeSystemTest.class);
svn commit: r1742659 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java
Author: schor Date: Fri May 6 22:17:50 2016 New Revision: 1742659 URL: http://svn.apache.org/viewvc?rev=1742659&view=rev Log: [UIMA-4674] add test timing add to indexes in various orders Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java?rev=1742659&r1=1742658&r2=1742659&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java Fri May 6 22:17:50 2016 @@ -27,7 +27,9 @@ import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; +import org.apache.uima.cas.impl.FSIndexRepositoryImpl; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.Annotation; @@ -42,6 +44,8 @@ public class IndexRepositoryTest extends FSIndexRepository indexRep; + private String running; + /* * (non-Javadoc) * @@ -106,7 +110,7 @@ public class IndexRepositoryTest extends FSIndexRepository ir = cas.getIndexRepository(); FSIndex index = ir.getIndex(CASTestSetup.ANNOT_SET_INDEX); -assertEquals(index.size(), 1); +assertEquals(1, index.size()); index = ir.getIndex(CASTestSetup.ANNOT_SORT_INDEX); assertEquals(2, index.size()); @@ -143,17 +147,17 @@ public class IndexRepositoryTest extends } // warmup and jit -timeAdd2Indexes(fsa); +timeAdd2Indexes(fsa, false); timeRemoveFromIndexes(fsa); -long a2i = timeAdd2Indexes(fsa); +long a2i = timeAdd2Indexes(fsa, false); long rfi = timeRemoveFromIndexes(fsa); -long a2i2 = timeAdd2Indexes(fsa); +long a2i2 = timeAdd2Indexes(fsa, false); long rfir = timeRemoveFromIndexesReverse(fsa); -System.out.format("Timing add/remv from indexes: add1: %,d msec, add2: %,d msec, rmv: %,d msec, rmvReversed: %,d msec%n", -a2i, a2i2, rfi, rfir); +System.out.format("Timing add/remv from indexes: add1: %,d microsec, add2: %,d microsec, rmv: %,d microsec, rmvReversed: %,d microsec%n", +a2i/1000, a2i2/1000, rfi/1000, rfir/1000); // big loop for doing profiling by hand and checking space recovery by hand //for (int i = 0; i < 1; i++) { @@ -162,69 +166,137 @@ public class IndexRepositoryTest extends //} } + public void testAddSpeed() { +running = "testAddSpeed - 2 sorted, 1 set, 1 bag"; +runAddSpeed(); + } + + public void testAddSpeedSorted() { +FSIndexRepositoryImpl ir = (FSIndexRepositoryImpl) cas.getIndexRepository(); +ir.removeIndex(CASTestSetup.ANNOT_SET_INDEX); +ir.removeIndex(CASTestSetup.ANNOT_SORT_INDEX); +ir.removeIndex(CASTestSetup.ANNOT_BAG_INDEX); +// ir.removeIndex(CAS.STD_ANNOTATION_INDEX); +running = "testAddSpeedSorted"; +runAddSpeed(); + } + + private void runAddSpeed() { + // create an instance of an annotation type +Feature beginFeat = this.typeSystem.getFeatureByFullName(CASTestSetup.TOKEN_TYPE + ":begin"); +Type fsType = this.typeSystem.getType(CASTestSetup.TOKEN_TYPE); +FeatureStructure[] fsa = new FeatureStructure[NBR_ITEMS]; +// create 4 tokens +for (int i = 0; i < fsa.length; i++) { + fsa[i] = this.cas.createFS(fsType); + fsa[i].setIntValue(beginFeat, i); +} + +// warmup and jit +long prev = Long.MAX_VALUE; +for (int i = 0; i < 10; i++) { + cas.getIndexRepository().removeAllIncludingSubtypes(cas.getTypeSystem().getTopType()); + long t = timeAdd2Indexes(fsa, false); + if (t < prev) { +System.out.format("%s Iteration %,d Add Forward 40K took %,d microsec%n", running, i, t/1000); +prev = t; + } +} + +prev = Long.MAX_VALUE; +for (int i = 0; i < 10; i++) { + cas.getIndexRepository().removeAllIncludingSubtypes(cas.getTypeSystem().getTopType()); + long t = timeAdd2Indexes(fsa, true); + if (t < prev) { +System.out.format("%s Iteration %,d Add Reverse 40K took %,d microsec%n", running, i, t/1000); +prev = t; + } +} + + } + public void testRemovalSpeedBagAlone() throws Exception { -// create an instance of an non-annotation type +FSIndexRepositoryIm
svn commit: r1742660 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryMergingTest.java
Author: schor Date: Fri May 6 22:18:28 2016 New Revision: 1742660 URL: http://svn.apache.org/viewvc?rev=1742660&view=rev Log: no jira - remove unused imports Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryMergingTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryMergingTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryMergingTest.java?rev=1742660&r1=1742659&r2=1742660&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryMergingTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryMergingTest.java Fri May 6 22:18:28 2016 @@ -21,24 +21,15 @@ package org.apache.uima.cas.test; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; import org.apache.uima.cas.FSIndex; -import org.apache.uima.cas.FSIndexRepository; -import org.apache.uima.cas.FSIterator; -import org.apache.uima.cas.Feature; -import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.admin.CASFactory; import org.apache.uima.cas.admin.FSIndexComparator; -import org.apache.uima.cas.admin.FSIndexRepositoryMgr; import org.apache.uima.cas.admin.LinearTypeOrderBuilder; import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.FSIndexComparatorImpl; import org.apache.uima.cas.impl.FSIndexRepositoryImpl; -import org.apache.uima.cas.impl.FsIndex_annotation; -import org.apache.uima.cas.impl.FsIndex_singletype; import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.cas.impl.TypeSystemImpl; -import org.apache.uima.cas.text.AnnotationFS; -import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.Annotation; import junit.framework.TestCase;
svn commit: r1742661 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexComparitorTest.java
Author: schor Date: Fri May 6 22:18:49 2016 New Revision: 1742661 URL: http://svn.apache.org/viewvc?rev=1742661&view=rev Log: no jira - remove unused imports Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexComparitorTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexComparitorTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexComparitorTest.java?rev=1742661&r1=1742660&r2=1742661&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexComparitorTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexComparitorTest.java Fri May 6 22:18:49 2016 @@ -36,7 +36,6 @@ import org.apache.uima.cas.admin.TypeSys import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.LinearTypeOrderBuilderImpl; import org.apache.uima.cas.impl.TypeSystemImpl; -import org.apache.uima.jcas.cas.TOP; import org.apache.uima.test.junit_extension.JUnitExtension; import junit.framework.TestCase;
svn commit: r1742662 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java
Author: schor Date: Fri May 6 22:19:50 2016 New Revision: 1742662 URL: http://svn.apache.org/viewvc?rev=1742662&view=rev Log: [UIMA-4674] add test for v2 backward compatibility with ll set-int and friends. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java?rev=1742662&r1=1742661&r2=1742662&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java Fri May 6 22:19:50 2016 @@ -25,10 +25,19 @@ import org.apache.uima.cas.CASRuntimeExc import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; -import org.apache.uima.cas.TypeSystem; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.FeatureImpl; import org.apache.uima.cas.impl.LowLevelCAS; import org.apache.uima.cas.impl.LowLevelTypeSystem; +import org.apache.uima.cas.impl.TypeImpl; +import org.apache.uima.cas.impl.TypeSystemConstants; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.jcas.cas.FSArray; +import org.apache.uima.jcas.cas.NonEmptyFSList; +import org.apache.uima.jcas.cas.Sofa; +import org.apache.uima.jcas.cas.TOP; +import org.apache.uima.jcas.tcas.Annotation; import junit.framework.TestCase; @@ -38,19 +47,19 @@ import junit.framework.TestCase; */ public class FeatureStructureTest extends TestCase { - private CAS cas; + private CASImpl cas; - private TypeSystem ts; + private TypeSystemImpl ts; private Type topType; private Type stringType; - private Type tokenType; + private TypeImpl tokenType; private Type intType; - private Type tokenTypeType; + private TypeImpl tokenTypeType; private Type wordType; @@ -79,6 +88,8 @@ public class FeatureStructureTest extend private Feature sentLenFeat; private Feature tokenFloatFeat; + private Feature tokenLongFeat; + private Feature tokenDoubleFeat; private Feature startFeature; @@ -97,9 +108,9 @@ public class FeatureStructureTest extend public void setUp() { try { - this.cas = CASInitializer.initCas(new CASTestSetup(), null); + this.cas = (CASImpl) CASInitializer.initCas(new CASTestSetup(), null); assertTrue(this.cas != null); - this.ts = this.cas.getTypeSystem(); + this.ts = (TypeSystemImpl) this.cas.getTypeSystem(); assertTrue(this.ts != null); } catch (Exception e) { e.printStackTrace(); @@ -133,6 +144,10 @@ public class FeatureStructureTest extend assertTrue(this.sentLenFeat != null); this.tokenFloatFeat = this.ts.getFeatureByFullName(CASTestSetup.TOKEN_FLOAT_FEAT_Q); assertTrue(this.tokenFloatFeat != null); +this.tokenDoubleFeat = this.ts.getFeatureByFullName(CASTestSetup.TOKEN_DOUBLE_FEAT_Q); +assertTrue(this.tokenDoubleFeat != null); +this.tokenLongFeat = this.ts.getFeatureByFullName(CASTestSetup.TOKEN_LONG_FEAT_Q); +assertTrue(this.tokenLongFeat != null); this.startFeature = this.ts.getFeatureByFullName(CAS.FEATURE_FULL_NAME_BEGIN); assertTrue(this.startFeature != null); this.langPairType = this.ts.getType(CASTestSetup.LANG_PAIR); @@ -200,6 +215,92 @@ public class FeatureStructureTest extend assertTrue(word.getType().equals(wordType1)); assertTrue(token.getType().equals(tokenType1)); } + + /** +* This test tests V2 backwards compatibility +* The goal is to match what V2 did for low level cas access +* The area this is testing is the use of the LL int operations to change the type of an existing feature structure. +*/ + public void testLLsetType() { + LowLevelCAS llc = cas.getLowLevelCAS(); +FSArray fsa = new FSArray(ts.getType(CAS.TYPE_NAME_FS_ARRAY), cas, 3); +NonEmptyFSList fsl = new NonEmptyFSList(ts.getType(CAS.TYPE_NAME_NON_EMPTY_FS_LIST), cas); + +Annotation token = this.cas.createFS(tokenType); +// set up some refs; these must be updated if the type changes in a way to require a new FS +fsa.set(0, token); // set
svn commit: r1742664 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/SerializationReinitTest.java
Author: schor Date: Fri May 6 22:21:59 2016 New Revision: 1742664 URL: http://svn.apache.org/viewvc?rev=1742664&view=rev Log: (empty) Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/SerializationReinitTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/SerializationReinitTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/SerializationReinitTest.java?rev=1742664&r1=1742663&r2=1742664&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/SerializationReinitTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/SerializationReinitTest.java Fri May 6 22:21:59 2016 @@ -646,7 +646,7 @@ public class SerializationReinitTest ext int ll_shortarrayfeatcode = ll_cas.ll_getTypeSystem().ll_getCodeForFeature(theShortArrayFeature); int ll_longfeatcode = ll_cas.ll_getTypeSystem().ll_getCodeForFeature(theLongFeature); - for (int cycle=0; cycle<10; cycle+=2) { + for (int cycle = 0; cycle < 10; cycle +=2 ) { FeatureStructure newFS1 = cas.createFS(theTypeType); newFS1.setIntValue(startFeature, cycle); newFS1.setIntValue(endFeature, cycle+1); @@ -692,7 +692,7 @@ public class SerializationReinitTest ext FSIndex idx = cas.getAnnotationIndex(theTypeType); FSIterator iter = idx.iterator(); -for (int tc=0; tc
svn commit: r1742665 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/UIMAException.java
Author: schor Date: Fri May 6 22:22:58 2016 New Revision: 1742665 URL: http://svn.apache.org/viewvc?rev=1742665&view=rev Log: [UIMA-4670] capture cause if present Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/UIMAException.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/UIMAException.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/UIMAException.java?rev=1742665&r1=1742664&r2=1742665&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/UIMAException.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/UIMAException.java Fri May 6 22:22:58 2016 @@ -88,6 +88,7 @@ public class UIMAException extends Excep */ public UIMAException(Throwable aCause) { super(aCause); +mCause = aCause; if (mMessageKey == null && (aCause instanceof I18nExceptionI)) { I18nExceptionI cause = (I18nExceptionI)aCause; mMessageKey = cause.getMessageKey(); @@ -131,7 +132,7 @@ public class UIMAException extends Excep */ public UIMAException(String aResourceBundleName, String aMessageKey, Object[] aArguments, Throwable aCause) { -super(); +super(aCause); this.mResourceBundleName = aResourceBundleName; this.mMessageKey = aMessageKey; this.mArguments = aArguments;
svn commit: r1742666 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java
Author: schor Date: Fri May 6 22:23:57 2016 New Revision: 1742666 URL: http://svn.apache.org/viewvc?rev=1742666&view=rev Log: [UIMA-4674] method change Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java?rev=1742666&r1=1742665&r2=1742666&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AnalysisEngineImplBase.java Fri May 6 22:23:57 2016 @@ -372,7 +372,7 @@ public abstract class AnalysisEngineImpl getCasManager().releaseCas(cas); TypeImpl t = ts.getType(aTypeName); -return (t == null) ? null : t.getFeatureImpls().stream().map(f -> f.getShortName()).toArray(size -> new String[size]); +return (t == null) ? null : t.getFeaturesAsStream().map(f -> f.getShortName()).toArray(size -> new String[size]); } /*
svn commit: r1743686 - in /uima/uimaj/trunk/uimaj-core/src/main: java/org/apache/uima/cas/CASRuntimeException.java java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java resources/org/apache/uima/UI
Author: schor Date: Fri May 13 15:02:00 2016 New Revision: 1743686 URL: http://svn.apache.org/viewvc?rev=1743686&view=rev Log: [UIMA-4932] add check for missing sofa ref when adding to indexes, with message indicating possible cause Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java?rev=1743686&r1=1743685&r2=1743686&view=diff == --- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java (original) +++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Fri May 13 15:02:00 2016 @@ -23,6 +23,7 @@ import org.apache.uima.UIMARuntimeExcept /** * Runtime exception class for package org.apache.uima.cas. + * Messages in org.apache.uima.UIMAException_Messages */ public class CASRuntimeException extends UIMARuntimeException { @@ -126,6 +127,9 @@ public class CASRuntimeException extends /** No sofaFS for specified sofaRef found. */ public static final String SOFAREF_NOT_FOUND = "SOFAREF_NOT_FOUND"; + /** Sofa reference for FS {0} is required, but it is not set. This can happen during deserialization when the type system changes where this FeatureStructure''s type definition is now a subtype of uima.cas.AnnotationBase but was not when the serialized form was created.*/ + public static final String SOFAREF_NOT_SET= "SOFAREF_NOT_SET"; + /** Can''t use standard set methods with SofaFS features. */ public static final String PROTECTED_SOFA_FEATURE = "PROTECTED_SOFA_FEATURE"; Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java?rev=1743686&r1=1743685&r2=1743686&view=diff == --- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java (original) +++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java Fri May 13 15:02:00 2016 @@ -2776,6 +2776,11 @@ public class FSIndexRepositoryImpl imple // skip test for wrong view if addback, etc. if (!isAddback && (!IS_DISABLE_ENHANCED_WRONG_INDEX_CHECK) && sii.tsi.isAnnotationBaseOrSubtype(typeCode)) { final int sofaAddr = cas.getSofaFeat(fsRef); + if (sofaAddr == 0) { +throw new CASRuntimeException( +CASRuntimeException.SOFAREF_NOT_SET, new String[] { + ((FeatureStructureImpl)(cas.ll_getFSForRef(fsRef))).toString()}); + } if (!cas.isSofaView(sofaAddr)) { AnnotationBaseImpl fs_abi = new AnnotationBaseImpl(fsRef, cas); SofaFS annotSofaFS = cas.getSofa(sofaAddr); Modified: uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?rev=1743686&r1=1743685&r2=1743686&view=diff == --- uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original) +++ uima/uimaj/trunk/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Fri May 13 15:02:00 2016 @@ -550,6 +550,7 @@ SOFANAME_ALREADY_EXISTS = A sofaFS with SOFADATA_ALREADY_SET = Data for Sofa feature {0} has already been set. SOFANAME_NOT_FOUND = No sofaFS with name {0} found. SOFAREF_NOT_FOUND = No sofaFS for specified sofaRef found. +SOFAREF_NOT_SET = Sofa reference for FS {0} is required, but it is not set. This can happen during deserialization when the type system changes where this FeatureStructure''s type definition is now a subtype of uima.cas.AnnotationBase but was not when the serialized form was created. PROTECTED_SOFA_FEATURE = Can''t use standard set methods with SofaFS features. JCAS_MISSING_COVERCLASS = The JCAS cover class "{0}" could not be loaded. INVALID_FEATURE_PATH = The feature path "{0}" is not valid.
svn commit: r1743687 - /uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java
Author: schor Date: Fri May 13 15:03:11 2016 New Revision: 1743687 URL: http://svn.apache.org/viewvc?rev=1743687&view=rev Log: [UIMA-4932] add test case, and also add tests that measure add to index performance in reverse order Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java Modified: uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java?rev=1743687&r1=1743686&r2=1743687&view=diff == --- uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java (original) +++ uima/uimaj/trunk/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java Fri May 13 15:03:11 2016 @@ -22,6 +22,7 @@ import junit.framework.TestCase; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; +import org.apache.uima.cas.CASRuntimeException; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.FSIndexRepository; import org.apache.uima.cas.FSIterator; @@ -29,8 +30,12 @@ import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; +import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.FSIndexRepositoryImpl; +import org.apache.uima.cas.impl.FeatureStructureImpl; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.cas.text.AnnotationFS; +import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.tcas.Annotation; @@ -61,6 +66,19 @@ public class IndexRepositoryTest extends indexRep = null; } + public void testMissingSofaRef() throws Exception { +Type sentType = this.typeSystem.getType(CASTestSetup.SENT_TYPE); +FeatureStructure sentence = this.cas.createFS(sentType); + ((CASImpl)cas).ll_setIntValue(((FeatureStructureImpl)sentence).getAddress(), TypeSystemImpl.annotSofaFeatCode, 0); +try { + this.indexRep.addFS(sentence); +} catch (CASRuntimeException e) { + assertEquals("SOFAREF_NOT_SET", e.getMessageKey()); + return; +} +fail("required exception not thrown"); // fail + } + public void testDefaultBagIndex() throws Exception { // create an instance of a non-annotation type Type tokenTypeType = this.typeSystem.getType(CASTestSetup.TOKEN_TYPE_TYPE); @@ -107,7 +125,7 @@ public class IndexRepositoryTest extends FSIndexRepository ir = cas.getIndexRepository(); FSIndex index = ir.getIndex(CASTestSetup.ANNOT_SET_INDEX); -assertEquals(index.size(), 1); +assertEquals(1, index.size()); index = ir.getIndex(CASTestSetup.ANNOT_SORT_INDEX); assertEquals(2, index.size()); @@ -144,17 +162,17 @@ public class IndexRepositoryTest extends } // warmup and jit -timeAdd2Indexes(fsa); +timeAdd2Indexes(fsa, false); timeRemoveFromIndexes(fsa); -long a2i = timeAdd2Indexes(fsa); +long a2i = timeAdd2Indexes(fsa, false); long rfi = timeRemoveFromIndexes(fsa); -long a2i2 = timeAdd2Indexes(fsa); +long a2i2 = timeAdd2Indexes(fsa, false); long rfir = timeRemoveFromIndexesReverse(fsa); -System.out.format("Timing add/remv from indexes: add1: %,d msec, add2: %,d msec, rmv: %,d msec, rmvReversed: %,d msec%n", -a2i, a2i2, rfi, rfir); +System.out.format("Timing add/remv from indexes: add1: %,d microsec, add2: %,d microsec, rmv: %,d microsec, rmvReversed: %,d microsec%n", +a2i/1000, a2i2/1000, rfi/1000, rfir/1000); // big loop for doing profiling by hand and checking space recovery by hand //for (int i = 0; i < 1; i++) { @@ -163,6 +181,40 @@ public class IndexRepositoryTest extends //} } + public void testAddSpeed() { +// create an instance of an annotation type +Feature beginFeat = this.typeSystem.getFeatureByFullName(CASTestSetup.TOKEN_TYPE + ":begin"); +Type fsType = this.typeSystem.getType(CASTestSetup.TOKEN_TYPE); +FeatureStructure[] fsa = new FeatureStructure[NBR_ITEMS]; +// create 4 tokens +for (int i = 0; i < fsa.length; i++) { + fsa[i] = this.cas.createFS(fsType); + fsa[i].setIntValue(beginFeat, i); +} + +// warmup and jit +long prev = Long.MAX_VALUE; +for (int i = 0; i < 5 /* 1000 */; i++) { + cas.getIndexRepository().removeAllIncludingSubtypes(cas.getTypeSystem().getTopType()); + long t = timeAdd2Indexes(fsa, false); + if (t < prev) { +System.out.format("Iteration %,d Add Forward 40K took %,d microsec%n", i, t/1000); +prev = t; + } +} + +prev = Lo
svn commit: r1743691 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java
Author: schor Date: Fri May 13 15:23:35 2016 New Revision: 1743691 URL: http://svn.apache.org/viewvc?rev=1743691&view=rev Log: [UIMA-4932] add test, fix other test now tripping extra check Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java?rev=1743691&r1=1743690&r2=1743691&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IndexRepositoryTest.java Fri May 13 15:23:35 2016 @@ -20,6 +20,7 @@ package org.apache.uima.cas.test; import org.apache.uima.cas.CAS; import org.apache.uima.cas.CASException; +import org.apache.uima.cas.CASRuntimeException; import org.apache.uima.cas.FSIndex; import org.apache.uima.cas.FSIndexRepository; import org.apache.uima.cas.FSIterator; @@ -27,7 +28,11 @@ import org.apache.uima.cas.Feature; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Type; import org.apache.uima.cas.TypeSystem; +import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.FSIndexRepositoryImpl; +import org.apache.uima.cas.impl.FeatureStructureImplC; +import org.apache.uima.cas.impl.TypeSystemConstants; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.cas.text.AnnotationFS; import org.apache.uima.cas.text.AnnotationIndex; import org.apache.uima.jcas.JCas; @@ -64,6 +69,18 @@ public class IndexRepositoryTest extends indexRep = null; } + public void testMissingSofaRef() throws Exception { +JCas jcas = cas.getJCas(); +Annotation a = new Annotation(jcas, 0, 4); +try { + jcas.addFsToIndexes(a); +} catch (CASRuntimeException e) { + assertEquals("SOFAREF_NOT_SET", e.getMessageKey()); + return; +} +fail("required exception not thrown"); // fail + } + public void testDefaultBagIndex() throws Exception { // create an instance of a non-annotation type Type tokenTypeType = this.typeSystem.getType(CASTestSetup.TOKEN_TYPE_TYPE); @@ -123,11 +140,13 @@ public class IndexRepositoryTest extends * @throws CASException */ public void testDupFsIndex() throws CASException { +cas.setSofaDataString("something", "text"); // otherwise triggers failure in addFsToIndex - no sofa ref JCas jcas = cas.getJCas(); Annotation a = new Annotation(jcas, 0, 4); cas.addFsToIndexes(a); cas.addFsToIndexes(a); -int expected = /*FSIndexRepositoryImpl.IS_ALLOW_DUP_ADD_2_INDEXES ? 2 :*/ 1; +cas.addFsToIndexes(a); +int expected = /*FSIndexRepositoryImpl.IS_ALLOW_DUP_ADD_2_INDEXES ? 4 :*/ 2; assertEquals(expected, cas.getIndexRepository().getIndex(CASTestSetup.ANNOT_SORT_INDEX).size()); assertEquals(expected, cas.getIndexRepository().getIndex(CASTestSetup.ANNOT_BAG_INDEX).size()); assertEquals(expected, cas.getIndexRepository().getIndex(CAS.STD_ANNOTATION_INDEX).size());
svn commit: r1743692 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
Author: schor Date: Fri May 13 15:24:13 2016 New Revision: 1743692 URL: http://svn.apache.org/viewvc?rev=1743692&view=rev Log: [UIMA-4932] add message Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?rev=1743692&r1=1743691&r2=1743692&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Fri May 13 15:24:13 2016 @@ -561,6 +561,7 @@ SOFANAME_ALREADY_EXISTS = A sofaFS with SOFADATA_ALREADY_SET = Data for Sofa feature {0} has already been set. SOFANAME_NOT_FOUND = No sofaFS with name {0} found. SOFAREF_NOT_FOUND = No sofaFS for specified sofaRef found. +SOFAREF_NOT_SET = Sofa reference for FS {0} is required, but it is not set. This can happen during deserialization when the type system changes where this FeatureStructure''s type definition is now a subtype of uima.cas.AnnotationBase but was not when the serialized form was created. PROTECTED_SOFA_FEATURE = Can''t use standard set methods with SofaFS features. JCAS_MISSING_COVERCLASS = The JCAS cover class "{0}" could not be loaded. INVALID_FEATURE_PATH = The feature path "{0}" is not valid.
svn commit: r1743693 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java
Author: schor Date: Fri May 13 15:26:53 2016 New Revision: 1743693 URL: http://svn.apache.org/viewvc?rev=1743693&view=rev Log: [UIMA-4932] add check for missing sofa ref; remove unused method, replace _typeImpl with _getTypeImpl(), rename autoindexname to _DefaultBagGeneratedIndex Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java?rev=1743693&r1=1743692&r2=1743693&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FSIndexRepositoryImpl.java Fri May 13 15:26:53 2016 @@ -50,6 +50,7 @@ import org.apache.uima.internal.util.Int import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.ObjHashSet; import org.apache.uima.jcas.cas.AnnotationBase; +import org.apache.uima.jcas.cas.Sofa; import org.apache.uima.jcas.cas.TOP; import org.apache.uima.jcas.tcas.Annotation; @@ -1112,15 +1113,7 @@ public class FSIndexRepositoryImpl imple action.accept(fs); } } - - /** - * plus means all reachable, plus maybe others not reachable but not yet gc'd - * @param action - - */ - public void walkReachablePlusFSsSorted(Consumer action) { -cas.walkReachablePlusFSsSorted(action); - } - + public FsIndex_singletype getNonSetSingleIndexForType(int typecode) { return getIndexesForType(typecode).getNonSetIndex().fsIndex_singletype; } @@ -1243,13 +1236,18 @@ public class FSIndexRepositoryImpl imple } private void addFS_common(T fs, boolean isAddback) { -TypeImpl ti = ((FeatureStructureImplC)fs)._typeImpl; +TypeImpl ti = ((FeatureStructureImplC)fs)._getTypeImpl(); final int typeCode = ti.getCode(); // https://issues.apache.org/jira/browse/UIMA-4099 // skip test for wrong view if addback, etc. if (!isAddback && (!IS_DISABLE_ENHANCED_WRONG_INDEX_CHECK) && ti.isAnnotationBaseType()) { + Sofa sofa = ((AnnotationBase)fs).getSofa(); + if (sofa == null) { +throw new CASRuntimeException( +CASRuntimeException.SOFAREF_NOT_SET, fs.toString(3)); + } // Check that the annotationBase FS is being added to the proper Cas View CASImpl indexView = fs._getView(); @@ -1317,14 +1315,14 @@ public class FSIndexRepositoryImpl imple } private static final String getAutoIndexNameForType(Type type) { -return "_" + type.getName() + "_GeneratedIndex"; +return "_" + type.getName() + "_DefaultBagGeneratedIndex"; } boolean removeFS_ret(TOP fs, boolean skipBagIndexes) { if (skipBagIndexes && !fs._inSetSortedIndex()) { return false; } -final int typeCode = fs._typeImpl.getCode(); +final int typeCode = fs._getTypeImpl().getCode(); final IndexesForType i4t = getIndexesForType(typeCode); final ArrayList> indexes4type = i4t.indexesForType; @@ -1474,7 +1472,7 @@ public class FSIndexRepositoryImpl imple // * @return true if this fs is found in a Set or Sorted index. // */ // public boolean isInSetOrSortedIndexInThisView(FeatureStructureImplC fs) { -//final TypeImpl ti = fs._typeImpl; +//final TypeImpl ti = fs._getTypeImpl(); // //final IndexesForType i4t = indexArray[ti.getCode()]; // @@ -1531,7 +1529,7 @@ public class FSIndexRepositoryImpl imple // boolean removeIfInCorrputableIndexInThisView(FeatureStructure afs) { //return removeFS_ret((TOP) afs, SKIP_BAG_INDEXES); TOP fs = (TOP) afs; -TypeImpl ti = fs._typeImpl; +TypeImpl ti = fs._getTypeImpl(); final IndexesForType i4t = getIndexesForType(ti.getCode()); int si = i4t.aSortedIndex;
svn commit: r1743694 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java
Author: schor Date: Fri May 13 15:28:23 2016 New Revision: 1743694 URL: http://svn.apache.org/viewvc?rev=1743694&view=rev Log: [UIMA-4932] add message Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java?rev=1743694&r1=1743693&r2=1743694&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Fri May 13 15:28:23 2016 @@ -23,6 +23,7 @@ import org.apache.uima.UIMARuntimeExcept /** * Runtime exception class for package org.apache.uima.cas. + * Messages in org.apache.uima.UIMAException_Messages */ public class CASRuntimeException extends UIMARuntimeException { @@ -161,7 +162,10 @@ public class CASRuntimeException extends /** No sofaFS for specified sofaRef found. */ public static final String SOFAREF_NOT_FOUND = "SOFAREF_NOT_FOUND"; - /** Can''t use standard set methods with SofaFS features. */ + /** Sofa reference for FS {0} is required, but it is not set. This can happen during deserialization when the type system changes where this FeatureStructure''s type definition is now a subtype of uima.cas.AnnotationBase but was not when the serialized form was created.*/ + public static final String SOFAREF_NOT_SET= "SOFAREF_NOT_SET"; + + /** Can''t use standard set methods with SofaFS features. */ public static final String PROTECTED_SOFA_FEATURE = "PROTECTED_SOFA_FEATURE"; /** The JCAS cover class "{0}" could not be loaded. */
svn commit: r1743715 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util: Misc.java Obj2IntIdentityHashMap.java
Author: schor Date: Fri May 13 18:34:38 2016 New Revision: 1743715 URL: http://svn.apache.org/viewvc?rev=1743715&view=rev Log: [UIMA-4674] add general method for shrinking a table on clear/reset to Misc, make use of it Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java?rev=1743715&r1=1743714&r2=1743715&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Misc.java Fri May 13 18:34:38 2016 @@ -33,6 +33,7 @@ import java.util.Collection; import java.util.List; import java.util.WeakHashMap; import java.util.function.Consumer; +import java.util.function.IntConsumer; import java.util.regex.Pattern; import org.apache.uima.UIMARuntimeException; @@ -459,6 +460,34 @@ public class Misc { } } + public static boolean maybeShrink( + boolean secondTimeShrinkable, + int size, + int capacity, + int factor, + int minCapacity, + IntConsumer realloc, + Runnable reset) { + +if (size < (capacity >> factor)) { + if (secondTimeShrinkable) { +int newCapacity = Math.max(minCapacity, capacity >> 1); +if (newCapacity < capacity) { + realloc.accept(newCapacity); +} else { + reset.run(); +} +return false; + } else { +reset.run(); +return true; + } +} else { + reset.run(); + return false; +} + } + //private static final Function uimaSystemFindLoadedClass; //static { // try { Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java?rev=1743715&r1=1743714&r2=1743715&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Obj2IntIdentityHashMap.java Fri May 13 18:34:38 2016 @@ -164,28 +164,10 @@ public class Obj2IntIdentityHashMap { } public void clear() { -// see if size is less than the 1/2 size that triggers expansion -if (size < (sizeWhichTriggersExpansion >>> 1)) { - // if 2nd time then shrink by 50% - // this is done to avoid thrashing around the threshold - if (secondTimeShrinkable) { -secondTimeShrinkable = false; -final int currentCapacity = getCapacity(); -final int newCapacity = Math.max(initialCapacity, currentCapacity >>> 1); -if (newCapacity < currentCapacity) { - newTable(newCapacity); // shrink table by 50% -} else { // don't shrink below minimum - resetArray(); -} -return; - - } else { -secondTimeShrinkable = true; - } -} else { - secondTimeShrinkable = false; // reset this to require 2 triggers in a row -} - resetArray(); +secondTimeShrinkable = Misc.maybeShrink( +secondTimeShrinkable, size, getCapacity(), 2, initialCapacity, +newCapacity -> newTable(newCapacity), +() -> resetArray()); } /**
svn commit: r1743716 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: BinaryCasSerDes.java BinaryCasSerDes4.java BinaryCasSerDes6.java
Author: schor Date: Fri May 13 18:41:28 2016 New Revision: 1743716 URL: http://svn.apache.org/viewvc?rev=1743716&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java?rev=1743716&r1=1743715&r2=1743716&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes.java Fri May 13 18:41:28 2016 @@ -325,7 +325,7 @@ public class BinaryCasSerDes { * @param heapAddr - */ private void maybeRemove(int heapAddr) { - TypeImpl type = fs._typeImpl; + TypeImpl type = fs._getTypeImpl(); boolean wasRemoved; if (!type.isArray()) { FeatureImpl feat = type.getFeatureImpls()[heapAddr - fsStartAddr - 1]; @@ -1231,9 +1231,6 @@ public class BinaryCasSerDes { final boolean isMarkSet = mark != null; if (isMarkSet) { - if (csds.getHeapEnd() == 0) { -System.out.println("debug"); - } csds.setup(mark.getNextFSId(), csds.getHeapEnd()); } else { csds.clear(); @@ -1269,7 +1266,7 @@ public class BinaryCasSerDes { * @param isMarkSet true if mark is set, used to compute first */ private void extractFsToV2Heaps(TOP fs, boolean isMarkSet, Obj2IntIdentityHashMap fs2addr) { -TypeImpl type = fs._typeImpl; +TypeImpl type = fs._getTypeImpl(); // pos is the pos in the new heaps; for delta it needs adjustment if written out int pos = heap.add(getFsSpaceReq(fs, type), type.getCode()); @@ -1642,7 +1639,7 @@ public class BinaryCasSerDes { */ private void updateHeapSlot(BinDeserSupport bds, int slotAddr, int slotValue, Int2ObjHashMap addr2fs) { TOP fs = bds.fs; -TypeImpl type = fs._typeImpl; +TypeImpl type = fs._getTypeImpl(); if (type.isArray()) { // only heap stored arrays have mod updates. final int hsai = slotAddr - bds.fsStartAddr - arrayContentOffset; // heap stored array index Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java?rev=1743716&r1=1743715&r2=1743716&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java Fri May 13 18:41:28 2016 @@ -615,7 +615,7 @@ public class BinaryCasSerDes4 implements // if (isDelta) { //// debug //for (TOP fs : csds.sortedFSs) { -// System.out.format("debug heapAddr: %,d type: %s%n", csds.fs2addr.get(fs), fs._typeImpl.getShortName()); +// System.out.format("debug heapAddr: %,d type: %s%n", csds.fs2addr.get(fs), fs._getTypeImpl().getShortName()); // if (csds.fs2addr.get(fs) == 439) { //System.out.println("debug"); // } @@ -714,7 +714,7 @@ public class BinaryCasSerDes4 implements } private void writeFs(TOP fs) throws IOException { - TypeImpl type = fs._typeImpl; + TypeImpl type = fs._getTypeImpl(); int typeCode = type.getCode(); writeVnumber(typeCode_dos, typeCode); @@ -803,7 +803,7 @@ public class BinaryCasSerDes4 implements if (length == 0) { return; } - final TypeImpl type = fs._typeImpl; + final TypeImpl type = fs._getTypeImpl(); // output values @@ -1240,7 +1240,7 @@ public class BinaryCasSerDes4 implements if (isDelta && !mark.isNew(fs)) { return; } - TypeImpl type = fs._typeImpl; + TypeImpl type = fs._getTypeImpl(); if (type.isArray()) { if (type.getComponentSlotKind() == SlotKind.Slot_StrRef) { @@ -1263,7 +1263,7 @@ public class BinaryCasSerDes4 implements */ private v
svn commit: r1743717 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java
Author: schor Date: Fri May 13 18:44:32 2016 New Revision: 1743717 URL: http://svn.apache.org/viewvc?rev=1743717&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java?rev=1743717&r1=1743716&r2=1743717&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureStructureImplC.java Fri May 13 18:44:32 2016 @@ -145,7 +145,7 @@ public class FeatureStructureImplC imple */ public final CASImpl _casView; - public TypeImpl _typeImpl; // experiment : support switching the type + private TypeImpl _typeImpl; //for backwards compatibility and deser typed arrays: support switching the type // Called only to generate a dummy value for the REMOVED flag in bag indexes @@ -1402,4 +1402,13 @@ public class FeatureStructureImplC imple //_flags = (_flags & ~bitMaskRefOffset) | v << shiftRefOffset; // } + public TypeImpl _getTypeImpl() { +return _typeImpl; + } + + protected void _setTypeImpl(TypeImpl ti) { +_typeImpl = ti; + } + + } \ No newline at end of file
svn commit: r1743720 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
Author: schor Date: Fri May 13 18:49:44 2016 New Revision: 1743720 URL: http://svn.apache.org/viewvc?rev=1743720&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection. Make local cas copy of id2fsw Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1743720&r1=1743719&r2=1743720&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Fri May 13 18:49:44 2016 @@ -28,6 +28,7 @@ import java.io.PrintStream; import java.io.PrintWriter; import java.io.StringWriter; import java.io.UnsupportedEncodingException; +import java.lang.ref.WeakReference; import java.net.URL; import java.nio.ByteBuffer; import java.util.ArrayList; @@ -43,6 +44,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; + import org.apache.uima.UIMAFramework; import org.apache.uima.UIMARuntimeException; import org.apache.uima.cas.AbstractCas_ImplBase; @@ -244,7 +246,7 @@ public class CASImpl extends AbstractCas FsChange(TOP fs) { this.fs = fs; - TypeImpl ti = fs._typeImpl; + TypeImpl ti = fs._getTypeImpl(); featuresModified = (ti.highestOffset == -1) ? null : new BitSet(ti.highestOffset + 1); arrayUpdates = (ti.isArray()) ? new PositiveIntSet_impl() : null; } @@ -460,6 +462,7 @@ public class CASImpl extends AbstractCas // fss fsIdGenerator = 0; id2fs.clear(); + baseCAS.resetId2fswInAllViews(); // follows id2fs.clear() above // index corruption avoidance fssTobeAddedback.clear(); @@ -584,6 +587,7 @@ public class CASImpl extends AbstractCas */ private TypeSystemImpl tsi_local; + private ArrayList id2fsw_local; // CASImpl(TypeSystemImpl typeSystem) { // this(typeSystem, DEFAULT_INITIAL_HEAP_SIZE); @@ -709,7 +713,7 @@ public class CASImpl extends AbstractCas private void checkInternalCodes(CASMgrSerializer ser) throws CASAdminException { if ((ser.topTypeCode > 0) -&& (ser.topTypeCode != ((TypeImpl) getTypeSystemImpl().getTopType()).getCode())) { +&& (ser.topTypeCode != topTypeCode)) { throw new CASAdminException(CASAdminException.DESERIALIZATION_ERROR); } if (ser.featureOffsets == null) { @@ -805,6 +809,17 @@ public class CASImpl extends AbstractCas this.getBaseCAS().tsi_local = ts; } + void resetId2fswInAllViews() { +final List sn2v = this.svd.sofaNbr2ViewMap; +if (sn2v.size() > 0) { + for (CASImpl view : sn2v.subList(1, sn2v.size())) { +view.id2fsw_local = this.svd.id2fs.getId2fsw(); + } +} +this.getBaseCAS().id2fsw_local = this.svd.id2fs.getId2fsw(); + + } + @Override public ConstraintFactory getConstraintFactory() { return ConstraintFactory.instance(); @@ -2258,7 +2273,7 @@ public class CASImpl extends AbstractCas public final int ll_getIntValue(int fsRef, int featureCode) { TOP fs = getFsFromId_checked(fsRef); if (featureCode == 0) { - return fs._typeImpl.getCode(); // case where the type is being requested + return fs._getTypeImpl().getCode(); // case where the type is being requested } FeatureImpl fi = getFeatFromCode_checked(featureCode); @@ -2560,7 +2575,7 @@ public class CASImpl extends AbstractCas * @return true if was removed from one or more indexes */ boolean removeFromIndexAnyView(final TOP fs, FSsTobeAddedback toBeAdded, boolean isSkipBagIndexes) { -final TypeImpl ti = ((FeatureStructureImplC)fs)._typeImpl; +final TypeImpl ti = ((FeatureStructureImplC)fs)._getTypeImpl(); if (ti.isAnnotationBaseType()) { boolean r = removeAndRecord(fs, (FSIndexRepositoryImpl) fs._casView.getIndexRepository(), @@ -2622,7 +2637,7 @@ public class CASImpl extends AbstractCas FeatureImpl fi = getFeatFromCode_checked(featureCode); -if (fs._typeImpl.isArray()) { +if (fs._getTypeImpl().isArray()) { throw new UnsupportedOperationException("ll_setIntValue not permitted to set a feature of an array"); } SlotKind kind = fi.getSlotKind(); @@ -2704,6 +2719,7 @@ public class CASImpl extends AbstractCas } private void switchFsType(TOP fs, int value) { +//throw new UnsupportedOperationE
svn commit: r1743723 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: CASSerializer.java CasSerializerSupport.java CommonSerDesSequential.java
Author: schor Date: Fri May 13 18:50:58 2016 New Revision: 1743723 URL: http://svn.apache.org/viewvc?rev=1743723&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CommonSerDesSequential.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java?rev=1743723&r1=1743722&r2=1743723&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASSerializer.java Fri May 13 18:50:58 2016 @@ -428,9 +428,9 @@ public class CASSerializer implements Se // because the output is only the new elements, this populates the arrays with only the new elements // Note: all heaps reserve slot 0 for null, real data starts at position 1 final CommonSerDesSequential csds = cas.getCsds(); -if (csds.getHeapEnd() == 0) { - System.out.println("debug"); -} +//if (csds.getHeapEnd() == 0) { +// System.out.println("debug"); +//} scanAllFSsForBinarySerialization(bcsd, mark, csds); // populates the arrays try { @@ -617,7 +617,7 @@ public class CASSerializer implements Se final Obj2IntIdentityHashMap fs2addr = csds.fs2addr; for (FsChange fsChange : fssModified) { final TOP fs = fsChange.fs; - final TypeImpl type = fs._typeImpl; + final TypeImpl type = fs._getTypeImpl(); if (fsChange.arrayUpdates != null) { switch(type.getComponentSlotKind()) { Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java?rev=1743723&r1=1743722&r2=1743723&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CasSerializerSupport.java Fri May 13 18:50:58 2016 @@ -675,7 +675,7 @@ public class CasSerializerSupport { } if (isFiltering) { - String typeName = fs._typeImpl.getName(); + String typeName = fs._getTypeImpl().getName(); if (filterTypeSystem.getType(typeName) == null) { return -1; // this type is not in the target type system } @@ -705,7 +705,7 @@ public class CasSerializerSupport { if (!alreadySet) { typeUsed.set(typeCode); -String typeName = fs._typeImpl.getName(); +String typeName = fs._getTypeImpl().getName(); XmlElementName newXel = csss.uimaTypeName2XmiElementName(typeName); if (!needNameSpaces) { @@ -832,7 +832,7 @@ public class CasSerializerSupport { for (TOP elem : theArray) { if (isFiltering && - (null == filterTypeSystem.getType(elem._typeImpl.getName( { + (null == filterTypeSystem.getType(elem._getTypeImpl().getName( { continue; // skip because not in filter type system } if (elem != null) { @@ -846,7 +846,7 @@ public class CasSerializerSupport { boolean insideListNode = fs instanceof CommonList; - for (FeatureImpl fi : fs._typeImpl.getFeatureImpls()) { + for (FeatureImpl fi : fs._getTypeImpl().getFeatureImpls()) { if (isFiltering && filterTypeSystem.getFeatureByFullName(fi.getName()) == null) { // skip features that aren't in the target type system continue; @@ -1011,13 +1011,7 @@ public class CasSerializerSupport { // } // return r; //} - -private int compareInts(int i1, int i2) { - return (i1 == i2) ? 0 : - (i1 > i2) ? 1 : -1; -} - - + /** * Called for JSon Serialization * Sort a view, by type and then by begin/end asc/des for subtypes of Annotation, @@ -1026,7 +1020,7 @@ public class CasSerializerSupport { public final Comparator sortFssByType =
svn commit: r1743725 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl: FeaturePathImpl.java FeatureValuePathImpl.java
Author: schor Date: Fri May 13 18:51:24 2016 New Revision: 1743725 URL: http://svn.apache.org/viewvc?rev=1743725&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeaturePathImpl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureValuePathImpl.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeaturePathImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeaturePathImpl.java?rev=1743725&r1=1743724&r2=1743725&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeaturePathImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeaturePathImpl.java Fri May 13 18:51:24 2016 @@ -547,15 +547,15 @@ class FeaturePathImpl implements Feature } if (this.featurePathElementNames.size() == 0) { - targetType = fs._typeImpl; + targetType = fs._getTypeImpl(); return fs; } // we have a feature path that must be evaluated -if (boundBaseType == null || !boundBaseType.subsumes(fs._typeImpl)) { +if (boundBaseType == null || !boundBaseType.subsumes(fs._getTypeImpl())) { boundFeatures.clear(); // reset if supplied FS not the one the features were calculated for. - boundBaseType = fs._typeImpl; + boundBaseType = fs._getTypeImpl(); } // set current FS values @@ -579,7 +579,7 @@ class FeaturePathImpl implements Feature * * So we check if this bound feature is appropriate for the current FS */ -if ( ! ((TypeImpl)targetFeature.getDomain()).subsumes(currentFs._typeImpl)) { +if ( ! ((TypeImpl)targetFeature.getDomain()).subsumes(currentFs._getTypeImpl())) { setTargetFeature(currentFs, i); } } else { @@ -644,10 +644,10 @@ class FeaturePathImpl implements Feature } private void setTargetFeature(TOP currentFs, int i) { -targetFeature = currentFs._typeImpl.getFeatureByBaseName(featurePathElementNames.get(i)); +targetFeature = currentFs._getTypeImpl().getFeatureByBaseName(featurePathElementNames.get(i)); if (targetFeature == null) { throw new CASRuntimeException(MESSAGE_DIGEST, "INVALID_FEATURE_PATH_FEATURE_NOT_DEFINED", - new Object[] { getFeaturePathString(), currentFs._typeImpl.getName(), this.featurePathElementNames.get(i) }); + new Object[] { getFeaturePathString(), currentFs._getTypeImpl().getName(), this.featurePathElementNames.get(i) }); } boundFeatures.add(targetFeature); // cache for future use } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureValuePathImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureValuePathImpl.java?rev=1743725&r1=1743724&r2=1743725&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureValuePathImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureValuePathImpl.java Fri May 13 18:51:24 2016 @@ -226,7 +226,8 @@ public class FeatureValuePathImpl implem } - public Object evaluate(int currentFS, LowLevelCAS cas) { + @Override + public Object evaluate(int currentFS, LowLevelCAS cas) { String valueType = getValueType(); if (CAS.TYPE_NAME_FLOAT.equals(valueType)) { return evaluateAsFloat(currentFS, cas); @@ -245,7 +246,8 @@ public class FeatureValuePathImpl implem } } - public Float evaluateAsFloat(int currentFS, LowLevelCAS cas) { + @Override + public Float evaluateAsFloat(int currentFS, LowLevelCAS cas) { if (currentFS == 0) { return null; } @@ -314,7 +316,8 @@ public class FeatureValuePathImpl implem } } - public Float[] evaluateAsFloatArray(int currentFS, LowLevelCAS cas) { + @Override + public Float[] evaluateAsFloatArray(int currentFS, LowLevelCAS cas) { if (!getValueType().equals(CAS.TYPE_NAME_FLOAT_ARRAY)) { throw new IllegalStateException("Feature path does not denote a float array"); } @@ -402,7 +4
svn commit: r1743730 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/
Author: schor Date: Fri May 13 19:29:03 2016 New Revision: 1743730 URL: http://svn.apache.org/viewvc?rev=1743730&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java?rev=1743730&r1=1743729&r2=1743730&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/LinearTypeOrderBuilderImpl.java Fri May 13 19:29:03 2016 @@ -111,8 +111,8 @@ public class LinearTypeOrderBuilderImpl */ @Override public int compare(FeatureStructure fs1, FeatureStructure fs2) { - TypeImpl t1 = ((FeatureStructureImplC)fs1)._typeImpl; - TypeImpl t2 = ((FeatureStructureImplC)fs2)._typeImpl; + TypeImpl t1 = ((FeatureStructureImplC)fs1)._getTypeImpl(); + TypeImpl t2 = ((FeatureStructureImplC)fs2)._getTypeImpl(); if (t1 == t2) return 0; return Short.compare(this.typeCodeToOrder[t1.getCode()], this.typeCodeToOrder[t2.getCode()]); Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java?rev=1743730&r1=1743729&r2=1743730&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeImpl.java Fri May 13 19:29:03 2016 @@ -819,7 +819,7 @@ public class TypeImpl implements Type, C return (v == null && (isRefType || isStringOrStringSubtype())) || (v instanceof String && isStringOrStringSubtype()) || ((v instanceof FeatureStructureImplC) && - subsumes( ((FeatureStructureImplC)v)._typeImpl)) || + subsumes( ((FeatureStructureImplC)v)._getTypeImpl())) || this.getCode() == TypeSystemImpl.javaObjectTypeCode; } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java?rev=1743730&r1=1743729&r2=1743730&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/TypeSystemImpl.java Fri May 13 19:29:03 2016 @@ -2505,8 +2505,8 @@ public class TypeSystemImpl implements T */ void fixupFSArrayTypes(TypeImpl featRange, TOP arrayFs) { if (featRange.isTypedFsArray()) { - if (arrayFs._typeImpl.getComponentType().subsumesStrictly(featRange.getComponentType())) { -arrayFs._typeImpl = featRange; // replace more general type with more specific type + if (arrayFs._getTypeImpl().getComponentType().subsumesStrictly(featRange.getComponentType())) { +arrayFs._setTypeImpl(featRange); // replace more general type with more specific type } } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/i
svn commit: r1743736 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/package.html
Author: schor Date: Fri May 13 19:59:04 2016 New Revision: 1743736 URL: http://svn.apache.org/viewvc?rev=1743736&view=rev Log: no Jira - update docs Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/package.html Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/package.html URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/package.html?rev=1743736&r1=1743735&r2=1743736&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/package.html (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/package.html Fri May 13 19:59:04 2016 @@ -34,8 +34,8 @@ Internals documentation NOTE: This documentation is plain HTML, generated from a WYSIWIG editor "tinymce". The way to work on this: after setting up a small web page with the tinymce (running from a local file), use the Tools - source code to cut/paste between this file's source and that editor. Java Cover Objects for version 3 -The Java Cover Objects are no longer cover objects; instead, instances are the Feature Structures for a particular UIMA type of the same name (generally - some built-ins have some name mapping done for the package name). -There is one definition of these objects per UIMA Type System. Support for PEARs having a different "customization" of JCas class is not supported in v3. +The Java Cover Objects are no longer cover objects; instead, these objects are the Feature Structures. The Java classes for these objects are in a hierarchy that corresponds to the UIMA type hierarchy. JCasGen continues to serve to generate (for user, not for built-in types) particular Java Classes for particular UIMA Types. And, as before, JCasGen'd classes are optional. If there was not a JCasGen'd class for "MyType" (assume a subtype of "Annotation"), then the most specific supertype of "MyType" which has a particular corresponding Java cover class, is used. (This is how it works in V2, also). +There is one definition of these objects per UIMA Type System. Support for PEARs having different "customizations" of the same JCas classname is not supported in v3. This loss of capability is mitigated by the addition of more kinds of Java types as built-in values. The reason for this not being supported is that there's no solution figured out for sharing types between the outer and PEAR pipelines, without encountering class-cast exceptions. @@ -44,13 +44,15 @@ Much of the infrastructure is kept as-is in version 3 to support backwards compatibility. Format of a JCas class version 3 The _Type is not used. May revisit this if users are using the low-level access made possible by _Type. -There is one definition of the class per type system. Type systems are often shared among multiple CASes. Each definition is loaded under a specific loader for that type system. The loader is set up to delegate to the parent for all classes except the JCas types, and for those, it generates them using ASM byte code generation from the fully merged TypeSystem information and existing "customizations". -Each feature is represented by the corresponding native Java type. Arrays are represented by Java Arrays. Getters and Setters are provided as before. Constructors are provided as before. +There is one definition of the class per type system. Type systems are often shared among multiple CASes. Each definition is loaded under a specific loader for that type system. +(Not implemented) The loader is set up to delegate to the parent for all classes except the JCas types, and for those, it generates them using ASM byte code generation from the fully merged TypeSystem information and existing "customizations". +Each feature is stored in one of two arrays, kept per Java Object Feature Structure Instance: an "int" array, holding boolean/byte/short/int/long/float/double values, and a "Object" array holding strings/refs-to-other-FSs. Longs and Doubles take 2 int slots. +Built-in arrays have their array parts represented by native Java Arrays. Getters and Setters are provided as before. Constructors are provided as before. Extra fields in the Feature Structure include both instance and class fields: -(class) a reference to the TypeImpl for this class - initialized by a reference to a TypeSystemImpl thread local value, at load time. -(class) a reference to all of the FeatureImpls, as an array, indexed by the feature offset value -(instance) a reference to the CAS View used when this feature structure was created +(static class fields) a set of
svn commit: r1743741 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas: impl/FSBagIndexTest.java impl/SerDesTest6.java test/FeatureStructureTest.java test/Itera
Author: schor Date: Fri May 13 20:07:13 2016 New Revision: 1743741 URL: http://svn.apache.org/viewvc?rev=1743741&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection, plus minor updates to tests Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java?rev=1743741&r1=1743740&r2=1743741&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/FSBagIndexTest.java Fri May 13 20:07:13 2016 @@ -112,8 +112,8 @@ public class FSBagIndexTest extends Test r.add(it.get()); it.moveToNext(); } -Collections.sort(r, (fs1, fs2) -> Integer.compare(fs1._id, fs2._id)); -Arrays.sort(ns, (fs1, fs2) -> Integer.compare(fs1._id, fs2._id)); +Collections.sort(r); +Arrays.sort(ns); assertTrue(Arrays.equals(ns, r.toArray())); assertFalse(it.isValid()); } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java?rev=1743741&r1=1743740&r2=1743741&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java Fri May 13 20:07:13 2016 @@ -82,6 +82,7 @@ public class SerDesTest6 extends TestCas private static long seed; // -8,093,220,039,004,886,811 // final private static Random random = setRandom(seed = -8093220039004886811L); +// final private static Random random = setRandom(seed = -7_080_877_499_529_731_700L); final private static Random random = setRandom(); static {System.out.format("SerDesTest6 RandomSeed: %,d%n", seed); } private final String testDocText = "test document text"; @@ -581,6 +582,7 @@ public class SerDesTest6 extends TestCas private void serdesDelta(TTypeSystem m) { remoteCas = setupCas(m); // create empty new CAS with specified type system from m.ts +casSrc.reset(); loadCas(casSrc, mSrc);// load up the src cas using mSrc spec ReuseInfo[] ri = serializeDeserialize(casSrc, remoteCas, null, null); //src -> serialize -> deserialize -> rmt Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java?rev=1743741&r1=1743740&r2=1743741&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/FeatureStructureTest.java Fri May 13 20:07:13 2016 @@ -254,7 +254,7 @@ public class FeatureStructureTest extend Annotation fs = cas.getFsFromId(tokId); assertTrue(fs == token); assertTrue(fs.id() == token.id()); -assertEquals(ts.annotType, fs._typeImpl); +assertEquals(ts.annotType, fs._getTypeImpl()); assertEquals(fs.getBegin(), 3); assertEquals(fs.getEnd(), 5); assertEquals(sofa, fs.getSofa()); @@ -283,7 +283,7 @@ public class FeatureStructureTest extend TOP ttt = cas.getFsFromId(tokId); assertTrue(ttt != token); assertTrue(ttt.id() == tokId); -assertEquals(ttt._typeImpl, tokenTypeType); +assertEquals(ttt._getTypeImpl(), tokenTypeType); assertTrue(fsa.get(0) == ttt); assertTrue(fsl.getHead() == ttt); Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/java/org/apache/uima/cas/test/IteratorTest.java URL: http://svn.apache.org/viewvc
svn commit: r1743744 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/resources/CASTests/desc/ArrayIndexTest.xml
Author: schor Date: Fri May 13 20:08:56 2016 New Revision: 1743744 URL: http://svn.apache.org/viewvc?rev=1743744&view=rev Log: [UIMA-4674] define a type system having an array of a specific Feature Structure Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/resources/CASTests/desc/ArrayIndexTest.xml Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/resources/CASTests/desc/ArrayIndexTest.xml URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/resources/CASTests/desc/ArrayIndexTest.xml?rev=1743744&r1=1743743&r2=1743744&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/resources/CASTests/desc/ArrayIndexTest.xml (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/test/resources/CASTests/desc/ArrayIndexTest.xml Fri May 13 20:08:56 2016 @@ -1,91 +1,101 @@ - - - -http://uima.apache.org/resourceSpecifier";> -org.apache.uima.java -true - org.apache.uima.cas.test.ArrayIndexTest - - -ArrayIndexTest - -1.0 -The Apache Software Foundation - - - - - - - - - - - uima.test.Child1Annotation - - uima.tcas.Annotation - - - uima.test.Child2Annotation - - uima.tcas.Annotation - - - uima.test.Child2ChildAnnotation - - uima.test.Child2Annotation - - - uima.test.Type - - uima.cas.TOP - - - - - - - - - - -ArrayIndex -uima.cas.FSArray -bag - - - - - - - - - - - - -x-unspecified - - - - - - + + +http://uima.apache.org/resourceSpecifier";> +org.apache.uima.java +true + org.apache.uima.cas.test.ArrayIndexTest + + +ArrayIndexTest + +1.0 +The Apache Software Foundation + + + + + + + + + uima.test.Child1Annotation + + uima.tcas.Annotation + + + uima.test.Child2Annotation + + uima.tcas.Annotation + + + uima.test.Child2ChildAnnotation + + uima.test.Child2Annotation + + + uima.test.Type + + uima.cas.TOP + + + uima.test.type.RefFsArraySubtype + + uima.cas.TOP + + + refToDeclFsArraySubtype + + uima.cas.FSArray + uima.tcas.Annotation + + + + + + + + + + + + +ArrayIndex +uima.cas.FSArray +bag + + + + + + + + + +x-unspecified + + + + + true + true + false + + +
svn commit: r1743745 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java
Author: schor Date: Fri May 13 20:10:00 2016 New Revision: 1743745 URL: http://svn.apache.org/viewvc?rev=1743745&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection, plus minor updates to tests Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java?rev=1743745&r1=1743744&r2=1743745&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/util/CasCopier.java Fri May 13 20:10:00 2016 @@ -579,7 +579,7 @@ public class CasCopier { while (it.hasNext()) { final TOP fs = it.nextNvc(); - // System.out.format("debug id: %,d type: %s%n", fs.id(), fs._typeImpl.getShortName()); + // System.out.format("debug id: %,d type: %s%n", fs.id(), fs._getTypeImpl().getShortName()); //Iterator indexes = srcCasViewImpl.getIndexRepository().ll_getIndexes(); //while (indexes.hasNext()) { // LowLevelIndex index = indexes.next(); @@ -771,7 +771,7 @@ public class CasCopier { return copy; } -TypeImpl tgtTi = getTargetType(((TOP)srcFs)._typeImpl); +TypeImpl tgtTi = getTargetType(((TOP)srcFs)._getTypeImpl()); if (null == tgtTi) { return null; // not in target, no FS to create } @@ -965,7 +965,7 @@ public class CasCopier { private TOP copyArray(TOP srcFS) { final CommonArray srcCA = (CommonArray) srcFS; final int size = srcCA.size(); -final TypeImpl tgtTi = getTargetType(((TOP)srcFS)._typeImpl); // could be null for src = e.g. Annotation[] +final TypeImpl tgtTi = getTargetType(((TOP)srcFS)._getTypeImpl()); // could be null for src = e.g. Annotation[] if (tgtTi == null) { return null; // can't copy
svn commit: r1743747 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/main/java/org/apache/uima/json/JsonCasSerializer.java
Author: schor Date: Fri May 13 20:12:53 2016 New Revision: 1743747 URL: http://svn.apache.org/viewvc?rev=1743747&view=rev Log: [UIMA-4674] _typeImpl not final (to support ll_setInt backward compatibility), change refs to it to _getTypeImpl() for protection, and change in data type returned for getFeatureImpls. Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/main/java/org/apache/uima/json/JsonCasSerializer.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/main/java/org/apache/uima/json/JsonCasSerializer.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/main/java/org/apache/uima/json/JsonCasSerializer.java?rev=1743747&r1=1743746&r2=1743747&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/main/java/org/apache/uima/json/JsonCasSerializer.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/main/java/org/apache/uima/json/JsonCasSerializer.java Fri May 13 20:12:53 2016 @@ -20,21 +20,24 @@ package org.apache.uima.json; import java.io.IOException; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.uima.cas.ByteArrayFS; import org.apache.uima.cas.CAS; +import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.Marker; import org.apache.uima.cas.TypeSystem; -import org.apache.uima.cas.impl.ByteArrayFSImpl; +import org.apache.uima.cas.function.IntConsumer_withIOException; import org.apache.uima.cas.impl.CASImpl; import org.apache.uima.cas.impl.CasSerializerSupport; import org.apache.uima.cas.impl.CasSerializerSupport.CasDocSerializer; import org.apache.uima.cas.impl.CasSerializerSupport.CasSerializerSupportSerialize; -import org.apache.uima.cas.impl.ListUtils; +import org.apache.uima.cas.impl.FeatureImpl; import org.apache.uima.cas.impl.LowLevelCAS; import org.apache.uima.cas.impl.MarkerImpl; import org.apache.uima.cas.impl.TypeImpl; @@ -42,10 +45,28 @@ import org.apache.uima.cas.impl.TypeSyst import org.apache.uima.cas.impl.XmiSerializationSharedData; import org.apache.uima.cas.impl.XmiSerializationSharedData.XmiArrayElement; import org.apache.uima.internal.util.IntVector; +import org.apache.uima.internal.util.Misc; import org.apache.uima.internal.util.PositiveIntSet; import org.apache.uima.internal.util.PositiveIntSet_impl; import org.apache.uima.internal.util.XmlElementName; import org.apache.uima.internal.util.rb_trees.RedBlackTree; +import org.apache.uima.jcas.cas.BooleanArray; +import org.apache.uima.jcas.cas.ByteArray; +import org.apache.uima.jcas.cas.CommonArray; +import org.apache.uima.jcas.cas.DoubleArray; +import org.apache.uima.jcas.cas.EmptyList; +import org.apache.uima.jcas.cas.FSArray; +import org.apache.uima.jcas.cas.FloatArray; +import org.apache.uima.jcas.cas.IntegerArray; +import org.apache.uima.jcas.cas.LongArray; +import org.apache.uima.jcas.cas.NonEmptyFSList; +import org.apache.uima.jcas.cas.NonEmptyFloatList; +import org.apache.uima.jcas.cas.NonEmptyIntegerList; +import org.apache.uima.jcas.cas.NonEmptyStringList; +import org.apache.uima.jcas.cas.ShortArray; +import org.apache.uima.jcas.cas.Sofa; +import org.apache.uima.jcas.cas.StringArray; +import org.apache.uima.jcas.cas.TOP; import org.apache.uima.json.impl.JsonContentHandlerJacksonWrapper; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; @@ -99,8 +120,6 @@ import com.fasterxml.jackson.core.io.Ser */ public class JsonCasSerializer { - private static final Integer[] EMPTY_INTEGER_ARRAY = new Integer[0]; - private static final SerializedString CONTEXT_NAME = new SerializedString("_context"); private static final SerializedString TYPE_SYSTEM_NAME = new SerializedString("_type_system"); @@ -454,16 +473,14 @@ public class JsonCasSerializer { private final JsonContentHandlerJacksonWrapper jch; private final JsonGenerator jg; - -private final String typeSystemReference; - + private final Map serializedStrings = new HashMap(); private final Map usedTypeName2XmlElementName; private final MapType2Subtypes mapType2Subtypes = new MapType2Subtypes(); -private final IntVector parentTypesWithNoInstances = new IntVector(); +private final List parentTypesWithNoInstances = new ArrayList<>(); private int lastEncodedTypeCode; @@ -473,8 +490,6 @@ public class JsonCasSerializer { private final boolean isWithContext; -private final boolean isWithExpandedTypeNames; - private final boolean isWithSubtypes; private boolean indexId; // true causes fs to be listed as "id" : { ...}, false as "type" : [ {...} @@ -489,9 +504,7 @@ p
svn commit: r1743748 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test: AllTypes.java RefTypes.java
Author: schor Date: Fri May 13 20:14:34 2016 New Revision: 1743748 URL: http://svn.apache.org/viewvc?rev=1743748&view=rev Log: [UIMA-4666] new jcasgend versions Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/AllTypes.java uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/RefTypes.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/AllTypes.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/AllTypes.java?rev=1743748&r1=1743747&r2=1743748&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/AllTypes.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/AllTypes.java Fri May 13 20:14:34 2016 @@ -1,11 +1,16 @@ -/* First created by JCasGen Sat Nov 01 07:15:36 EDT 2014 */ + +/* Apache UIMA v3 - First created by JCasGen Tue Mar 08 10:58:32 EST 2016 */ + package org.apache.uima.test; +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; -import org.apache.uima.jcas.cas.TOP_Type; + import org.apache.uima.jcas.cas.FSList; import org.apache.uima.jcas.cas.FSArray; @@ -19,8 +24,8 @@ import org.apache.uima.jcas.cas.BooleanA /** - * Updated by JCasGen Sat Nov 01 07:15:36 EDT 2014 - * XML source: C:/au/svnCheckouts/trunk/uimaj/uimaj-json/src/test/resources/CasSerialization/desc/allTypes.xml + * Updated by JCasGen Tue Mar 08 10:58:32 EST 2016 + * XML source: C:/au/svnCheckouts/branches/uimaj/experiment-v3-jcas/uimaj-json/src/test/resources/CasSerialization/desc/allTypes.xml * @generated */ public class AllTypes extends Annotation { /** @generated @@ -39,17 +44,49 @@ public class AllTypes extends Annotation @Override public int getTypeIndexID() {return typeIndexID;} + + /* *** + * Feature Offsets * + * ***/ + + /* Feature Adjusted Offsets */ + public final static int _FI_aBoolean = TypeSystemImpl.getAdjustedFeatureOffset("aBoolean"); + public final static int _FI_aByte = TypeSystemImpl.getAdjustedFeatureOffset("aByte"); + public final static int _FI_aShort = TypeSystemImpl.getAdjustedFeatureOffset("aShort"); + public final static int _FI_aInteger = TypeSystemImpl.getAdjustedFeatureOffset("aInteger"); + public final static int _FI_aLong = TypeSystemImpl.getAdjustedFeatureOffset("aLong"); + public final static int _FI_aFloat = TypeSystemImpl.getAdjustedFeatureOffset("aFloat"); + public final static int _FI_aDouble = TypeSystemImpl.getAdjustedFeatureOffset("aDouble"); + public final static int _FI_aString = TypeSystemImpl.getAdjustedFeatureOffset("aString"); + public final static int _FI_aFS = TypeSystemImpl.getAdjustedFeatureOffset("aFS"); + public final static int _FI_aArrayBoolean = TypeSystemImpl.getAdjustedFeatureOffset("aArrayBoolean"); + public final static int _FI_aArrayMrBoolean = TypeSystemImpl.getAdjustedFeatureOffset("aArrayMrBoolean"); + public final static int _FI_aArrayMrByte = TypeSystemImpl.getAdjustedFeatureOffset("aArrayMrByte"); + public final static int _FI_aArrayByte = TypeSystemImpl.getAdjustedFeatureOffset("aArrayByte"); + public final static int _FI_aArrayShort = TypeSystemImpl.getAdjustedFeatureOffset("aArrayShort"); + public final static int _FI_aArrayMrShort = TypeSystemImpl.getAdjustedFeatureOffset("aArrayMrShort"); + public final static int _FI_aArrayString = TypeSystemImpl.getAdjustedFeatureOffset("aArrayString"); + public final static int _FI_aArrayMrString = TypeSystemImpl.getAdjustedFeatureOffset("aArrayMrString"); + public final static int _FI_aListInteger = TypeSystemImpl.getAdjustedFeatureOffset("aListInteger"); + public final static int _FI_aListMrInteger = TypeSystemImpl.getAdjustedFeatureOffset("aListMrInteger"); + public final static int _FI_aListString = TypeSystemImpl.getAdjustedFeatureOffset("aListString"); + public final static int _FI_aListMrString = TypeSystemImpl.getAdjustedFeatureOffset("aListMrString"); + public final static int _FI_aListFs = TypeSystemImpl.getAdjustedFeatureOffset("aListFs"); + public final static int _FI_aListMrFs = TypeSystemImpl.getAdjustedFeatureOffset("aListMrFs"); + public final static int _FI_aArrayFS = TypeSystemImpl.getAdjustedFeatureOffset("aArrayFS"); + + /** Never called. Disable default constructor
svn commit: r1743749 - in /uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test: AllTypes_Type.java RefTypes_Type.java
Author: schor Date: Fri May 13 20:14:58 2016 New Revision: 1743749 URL: http://svn.apache.org/viewvc?rev=1743749&view=rev Log: [UIMA-4666] new jcasgend versions Removed: uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/AllTypes_Type.java uima/uimaj/branches/experiment-v3-jcas/uimaj-json/src/test/java/org/apache/uima/test/RefTypes_Type.java
svn commit: r1744753 - /uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml
Author: schor Date: Fri May 20 15:14:26 2016 New Revision: 1744753 URL: http://svn.apache.org/viewvc?rev=1744753&view=rev Log: no Jira - add table consolidating useful comparative information about the alternative CAS Serialization capabilities Modified: uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml Modified: uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml?rev=1744753&r1=1744752&r2=1744753&view=diff == --- uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml (original) +++ uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml Fri May 20 15:14:26 2016 @@ -485,17 +485,21 @@ ae.destroy(); Saving CASes to file systems or general Streams The UIMA framework provides multiple APIs to save and restore the contents of a CAS to streams. + Two common uses of this are to save CASes to the file system, and to send CASes to other processes, running + on remote systems. + + The CASes can be serialized in multiple formats: Binary formats: - plain binary: This is used to communicate with remote services, and also for interfacing with + plain binary: This is used to communicate with remote services, and also for interfacing with annotators written in C/C++ or related languages via the JNI Java interface, from Java - Two forms of compressed binary. The recommend one is form 6, which also allows + Compressed binary: There are two forms of compressed binary. The recommend one is form 6, which also allows type filtering. See . @@ -515,6 +519,141 @@ ae.destroy(); + Each of these serializations has different capabilities, summarized in the table below. + + Serialization Capabilities + + + + + + + + + + + +XCAS +XMI +JSON +Binary +Cmpr 4 +Cmrp 6 + + + + +Output +Output Stream +Output Stream +Output Stream, File, Writer +Output Stream +Output Stream, Data Output Stream, File +Output Stream, Data Output Stream, File + + +Lists/Arrays inline formatting? +- +Yes +Yes +- +- +- + + +Formatted? +- +Yes +Yes +- +- +- + + +Type Filtering? +- +Yes +Yes +- +- +Yes + + +Delta Cas? +- +Yes +- +Yes +Yes +Yes + + +OOTS? +Yes +Yes +- +- +- +- + + +Only send indexed + reachable FSs? +Yes +Yes +Yes +send all +send all +Yes + + +NameSpace/Schemas? +- +Yes +- +- +- +- + + + + + + + + In the above table, Cmpr 4 and Cmpr 6 refer to Compressed forms of the serialization. + + For the XMI and JSON formats, lists and arrays can sometimes be formatted "inline". + In this representation, the elements are formatted directly as the value of a particular + feature. This is only done if the arrays and lists are not multiply-referenced. + + Type Filtering support enables only a subset of the types and/or features to be + serialized. An additional type system object is used to specify the types to be included + in the serialization. This can be useful, fo
svn commit: r1744755 - in /uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides: ./ src/docbook/tug.application.xml
Author: schor Date: Fri May 20 15:20:40 2016 New Revision: 1744755 URL: http://svn.apache.org/viewvc?rev=1744755&view=rev Log: no Jira - catchup with trunk, get new table of cas serialization methods Modified: uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/ (props changed) uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml Propchange: uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Fri May 20 15:20:40 2016 @@ -1,4 +1,4 @@ /uima/uimaj/branches/depend-on-july-9-build-tools/uima-docbook-tutorials-and-users-guides:963167-964468 /uima/uimaj/branches/depend-on-parent-pom-4/uima-docbook-tutorials-and-users-guides:961329-961745 /uima/uimaj/branches/filteredCompress-uima-2498/uima-docbook-tutorials-and-users-guides:1436573-1462257 -/uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides:1690273-1693269 +/uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides:1690273-1693269,1744753-1744754 Modified: uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml?rev=1744755&r1=1744754&r2=1744755&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml (original) +++ uima/uimaj/branches/experiment-v3-jcas/uima-docbook-tutorials-and-users-guides/src/docbook/tug.application.xml Fri May 20 15:20:40 2016 @@ -485,17 +485,21 @@ ae.destroy(); Saving CASes to file systems or general Streams The UIMA framework provides multiple APIs to save and restore the contents of a CAS to streams. + Two common uses of this are to save CASes to the file system, and to send CASes to other processes, running + on remote systems. + + The CASes can be serialized in multiple formats: Binary formats: - plain binary: This is used to communicate with remote services, and also for interfacing with + plain binary: This is used to communicate with remote services, and also for interfacing with annotators written in C/C++ or related languages via the JNI Java interface, from Java - Two forms of compressed binary. The recommend one is form 6, which also allows + Compressed binary: There are two forms of compressed binary. The recommend one is form 6, which also allows type filtering. See . @@ -515,6 +519,141 @@ ae.destroy(); + Each of these serializations has different capabilities, summarized in the table below. + + Serialization Capabilities + + + + + + + + + + + +XCAS +XMI +JSON +Binary +Cmpr 4 +Cmrp 6 + + + + +Output +Output Stream +Output Stream +Output Stream, File, Writer +Output Stream +Output Stream, Data Output Stream, File +Output Stream, Data Output Stream, File + + +Lists/Arrays inline formatting? +- +Yes +Yes +- +- +- + + +Formatted? +- +Yes +Yes +- +- +- + + +Type Filtering? +- +Yes +Yes +- +- +Yes + + +Delta Cas? +- +Yes +- +Yes +Yes +Yes + + +OOTS? +Yes +Yes +- +- +- +- + + +Only send indexed + reachable FSs? +Yes +Yes +Yes +send all +send all +
svn commit: r1745371 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties
Author: schor Date: Tue May 24 15:24:49 2016 New Revision: 1745371 URL: http://svn.apache.org/viewvc?rev=1745371&view=rev Log: [UIMA-4670] add new exception messages Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties?rev=1745371&r1=1745370&r2=1745371&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/resources/org/apache/uima/UIMAException_Messages.properties Tue May 24 15:24:49 2016 @@ -573,6 +573,7 @@ ANNOTATION_IN_WRONG_INDEX = Error - the TYPE_NOT_IN_INDEX = Error accessing index "{0}" for type "{1}". Index "{0}" is over type "{2}", which is not a supertype of "{1}". DISALLOW_CREATE_ANNOTATION_IN_BASE_CAS = The type "{0}", a subtype of AnnotationBase, can''t be created in the Base CAS. CANNOT_CLONE_SOFA = SofaFS may not be cloned. +CAS_MISMATCH = Mismatched CAS "{0}". DELTA_CAS_PREEXISTING_FS_DISALLOWED = "Preexisting FS encountered but not allowed. "{0}" INVALID_MARKER = Marker is invalid. MULTIPLE_CREATE_MARKER = CreateMarker called multiple times for one CAS. This implementation only supports one call. @@ -590,6 +591,9 @@ CAS_MISSING_FS = The CAS doesn''t have a INVALID_FS_ID = The Feature Structure ID {0} is invalid. TYPESYSTEMS_NOT_COMMITTED = Type Systems must be committed before calling this method. ADD_ARRAY_TYPE_AFTER_TS_COMMITTED = Can''t add an array type "{0}" to the type system after the type system has been committed. +FS_NOT_MEMBER_OF_CAS = Feature Structure {0} belongs to CAS {1}, may not be set as the value of an array or list element in a different CAS {2}. +ILLEGAL_STATE_DELTA_SERIALIZE_WITHOUT_PREVIOUS_DESERIALIZE = Illegal State - cannot do delta serialization ({0}) of a Cas {1} without a previous deserialize. +ILLEGAL_ADD_TO_INDEX_IN_BASE_CAS = Illegal operation - cannot add Feature Structure {0} to base CAS {1}. # # Serialization / deserialization runtime exceptions
svn commit: r1745372 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java
Author: schor Date: Tue May 24 15:25:50 2016 New Revision: 1745372 URL: http://svn.apache.org/viewvc?rev=1745372&view=rev Log: [UIMA-4670] add new exception messages Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java?rev=1745372&r1=1745371&r2=1745372&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/CASRuntimeException.java Tue May 24 15:25:50 2016 @@ -266,6 +266,15 @@ public class CASRuntimeException extends /** While deserializing, no type found for type code {0}. */ public static final String deserialized_type_not_found = "deserialized_type_not_found"; + /** Feature Structure {0} belongs to CAS {1}, may not be set as the value of an array or list element in a different CAS {2}.*/ + public static final String FS_NOT_MEMBER_OF_CAS = "FS_NOT_MEMBER_OF_CAS"; + + /** Illegal State - cannot do delta serialization ({0}) of a Cas {1} without a previous deserialize.*/ + public static final String ILLEGAL_STATE_DELTA_SERIALIZE_WITHOUT_PREVIOUS_DESERIALIZE = "ILLEGAL_STATE_DELTA_SERIALIZE_WITHOUT_PREVIOUS_DESERIALIZE"; + + /** Illegal operation - cannot add Feature Structure {0} to base Cas {1}.*/ + public static final String ILLEGAL_ADD_TO_INDEX_IN_BASE_CAS = "ILLEGAL_ADD_TO_INDEX_IN_BASE_CAS"; + /** * The constructors are organized *
svn commit: r1745488 - /uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Pair.java
Author: schor Date: Wed May 25 13:57:13 2016 New Revision: 1745488 URL: http://svn.apache.org/viewvc?rev=1745488&view=rev Log: [UIMA-4674] allow updating of 2nd value of Pair (change from "final") Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Pair.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Pair.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Pair.java?rev=1745488&r1=1745487&r2=1745488&view=diff == --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Pair.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/internal/util/Pair.java Wed May 25 13:57:13 2016 @@ -3,7 +3,8 @@ package org.apache.uima.internal.util; public class Pair { public final T t; - public final U u; + /** updatable but don't update if used as key in hashtable */ + public U u; public Pair(T t, U u) { this.t = t;