[ 
https://issues.apache.org/jira/browse/UIMA-6274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17214887#comment-17214887
 ] 

Richard Eckart de Castilho edited comment on UIMA-6274 at 10/15/20, 6:07 PM:
-----------------------------------------------------------------------------

It also works if one simply calls {{new TypeSystemImpl();}} before creating the 
proxy.

{code}
    new TypeSystemImpl();
    
    Proxy.newProxyInstance(getClass().getClassLoader(), new Class[] { 
JCas.class },
            new InvocationHandler() {

              @Override
              public Object invoke(Object aProxy, Method aMethod, Object[] 
aArgs) throws Throwable {
                return null;
              }
            });
    
    JCas jCas1 = CasCreationUtils.createCas((TypeSystemDescription) null, null, 
null).getJCas();
    jCas1.setDocumentText("test text");
{code}


was (Author: rec):
It also works if one simply calls {{new TypeSystemImpl();}} before creating the 
proxy.

{{noformat}}
    new TypeSystemImpl();
    
    Proxy.newProxyInstance(getClass().getClassLoader(), new Class[] { 
JCas.class },
            new InvocationHandler() {

              @Override
              public Object invoke(Object aProxy, Method aMethod, Object[] 
aArgs) throws Throwable {
                return null;
              }
            });
    
    JCas jCas1 = CasCreationUtils.createCas((TypeSystemDescription) null, null, 
null).getJCas();
    jCas1.setDocumentText("test text");
{{noformat}}

> Creating a mock (or a proxy) for Unittest of a JCas causes failure on further 
> regular JCas 
> -------------------------------------------------------------------------------------------
>
>                 Key: UIMA-6274
>                 URL: https://issues.apache.org/jira/browse/UIMA-6274
>             Project: UIMA
>          Issue Type: Bug
>          Components: uimaj
>    Affects Versions: 3.1.1SDK
>         Environment: java 1.8.0-201
>            Reporter: Serge Démoulin
>            Priority: Major
>         Attachments: easymock-green.zip, easymock-red.zip, exception.txt, 
> proxy-green.zip, proxy-red.zip
>
>
> The following Code (see attached proxy-red.zip)
> {code:java}
> ProxyFactory f = new ProxyFactory();
> f.setTargetClass(JCas.class);
> f.getProxy();
> JCas jCas1 = JCasFactory.createJCas(new String[] {});
> jCas1.setDocumentText("test text"); // ==> ArrayIndexOutOfBoundsException
> {code}
> is throwing the following exception (see attached exception.txt)
> java.lang.ArrayIndexOutOfBoundsException: -1
>  at 
> ....FeatureStructureImplC._setIntValueCommon(FeatureStructureImplC.java:1636)
> WORKAROUND (see attached proxy-green.zip)
>  Creating a regular JCas before fix the problem  (without using the created 
> JCas)
> {code:java}
> JCasFactory.createJCas(new String[] {}); 
> ProxyFactory f = new ProxyFactory(); 
> f.setTargetClass(JCas.class); 
> f.getProxy(); 
> JCas jCas1 = JCasFactory.createJCas(new String[] {}); 
> jCas1.setDocumentText("test text"); // ==> No exception
> {code}
>  
> EASYMOCK
>  The same problem occurs with EasyMock (see attached easymock.-red.zip and 
> easymock-green.zip)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to