Thanks Marshall,
I attach the stack trace and java code below.

<exception>
Exception in thread "main" java.lang.NullPointerException
        at org.apache.uima.cas.impl.CASImpl.ll_getFSForRef(CASImpl.java:2745)
        at 
jp.ac.keio.dmc.context.srw.types.PersonWikip.getCompany_related(PersonWikip.java:233)
        at 
jp.ac.keio.dmc.context.srw.SRWikipediaMain.extractNeeFromText(SRWikipediaMain.java:120)
        at 
jp.ac.keio.dmc.context.srw.SRWikipediaMain.extractNeeFromWebdoc(SRWikipediaMain.java:85)
        at 
jp.ac.keio.dmc.context.srw.SRWikipediaMain.extractNamedentity(SRWikipediaMain.java:67)
        at 
jp.ac.keio.dmc.context.srw.SRWikipediaMain.<init>(SRWikipediaMain.java:47)
        at 
jp.ac.keio.dmc.context.srw.SRWikipediaMain.main(SRWikipediaMain.java:210)
</exception>


- PersonWikip.java
I don't attach because it is nothing special that is generated
automatically after defining Type System Definition on Component
descriptor editor.


- whole code of SRWikipediaMain.java
# You might feel the code verbose because I paste the whole...

<SRWikipediaMain.java>
1: package jp.ac.keio.dmc.context.srw;
2:
3: import java.io.IOException;
4: import java.util.LinkedList;
5:
6: import jp.ac.keio.dmc.context.srw.types.PersonWikip;
7: import jp.ac.keio.dmc.context.util.http.DMCHttpClient;
8: import net.lateeye.util.uima.AnalysisEngineUtil;
9:
10: import org.apache.uima.analysis_engine.AnalysisEngine;
11: import org.apache.uima.cas.FSIndex;
12: import org.apache.uima.cas.FSIterator;
13: import org.apache.uima.jcas.JCas;
14: import org.apache.uima.jcas.cas.StringArray;
15: import org.apache.uima.util.XMLInputSource;
16:
17: import com.ibm.omnifind.ne.types.Company;
18: import com.ibm.omnifind.ne.types.Org;
19:
20: public class SRWikipediaMain {
21:     private static String path_eclipseWorkspace_root =
"C:/data/app/workspace_eclipse/";
22:     private static String path_ibmNeeDesc = path_eclipseWorkspace_root
23:                     + "tae_nee_apacheUima/" + "desc/";
24:     private static String path_srwAeDesc = path_eclipseWorkspace_root
25:                     + "srwikipedia/" + "descriptor/";
26:     private static String uimaDesc_personWikip = path_srwAeDesc
27:                     + "KeioWikipAnnotatorDescriptor.xml";
28:     private static String uimaDesc_ibmNee = path_ibmNeeDesc
29:                     + "NamedEntityAnnotatorDescriptor.xml";
30:     private static String uimaDesc_wikipPersonNee = path_srwAeDesc
31:                     + "WikipPersonNeeAnnotatorDescriptor.xml";
32:     // private LinkedList<PersonWikip> personList = null;
33:     private DMCHttpClient dhc = new DMCHttpClient();
34:
35:     public SRWikipediaMain() {
36:             // extract keio person from wikipedia
37:             LinkedList<PersonWikip> personList = 
this.extractKeioPersonWikipedia();
38:
39:             // extract NEs using personList
40:             personList = this.extractNamedentity(personList);
41:
42:             // update 2 RDB
43:             this.update_SRW_db(personList);
44:     }
45:
46:     private void update_SRW_db(LinkedList<PersonWikip> persons) {
47:             // TODO Auto-generated method stub
48:     }
49:
50:     private LinkedList<PersonWikip> extractNamedentity(
51:                     LinkedList<PersonWikip> persons) {
52:
53:             LinkedList<PersonWikip> newList = new LinkedList<PersonWikip>();
54:             for (int i = 0; i < persons.size(); i++) {
55:                     PersonWikip person = persons.get(i);
56:
57:                     System.out.println("SRWikipediaMain:extractNE: "
58:                                     + person.getPersonname().getLex());
59:
60:                     person = this.extractNeeFromWebdoc(person, 
person.getUrl_wikip());
61:
62:                     // 2007nov19/130s/for saving memory
63:                     // newList.add(person);
64:                     person = null;
65:             }
66:             return newList;
67:     }
68:
69:     private PersonWikip extractNeeFromWebdoc(PersonWikip person, String 
uri) {
70:
71:             String htmlBody = null;
72:             try {
73:                     htmlBody = this.dhc.doGetBody(uri);
74:             } catch (IllegalArgumentException e) {
75:                     // occur when the person name is not enclosed by <a> 
tag.
76:             }
77:
78:             return this.extractNeeFromText(person, htmlBody);
79:     }
80:
81:     private PersonWikip extractNeeFromText(PersonWikip person, String
htmlBody) {
82:             if (htmlBody != null) {
83:                     // read component descriptor for IBM NEE
84:                     XMLInputSource in = null;
85:                     try {
86:                             in = new 
XMLInputSource(SRWikipediaMain.uimaDesc_ibmNee);
87:                     } catch (IOException e) {
88:                             e.printStackTrace();
89:                     }
90:
91:                     // give html to analysis engine
92:                     AnalysisEngine ae = 
AnalysisEngineUtil.getAeInstance(in);
93:                     JCas jcas = AnalysisEngineUtil
94:                                     .analyzeByAnalysisEngine(ae, htmlBody);
95:
96:                     // set firm
97:                     System.out.print(" - firm: ");
98:
99:                     FSIndex index = 
jcas.getJFSIndexRepository().getAnnotationIndex(
100:                                    Company.type);
101:                    FSIterator compIter = index.iterator();
102:
103:                    StringArray compArray = new StringArray(jcas, 
index.size());
104:                    int num_company = 0;
105:                    while (compIter.hasNext()) {
106:                            Company annot = (Company) compIter.next();
107:                            compArray.set(num_company, annot.getLex());
108:                            // TODO remove redundunt values
109:
110:                            num_company++;
111:                    }
112:                    person.setCompany_related(compArray);
113:                    System.out.print(person.getCompany_related().toArray() 
+ " ");
114:
115:                    // set org
116:                    System.out.println("");
117:                    System.out.print(" - org: ");
118:
119:                    FSIterator orgIter = jcas.getJFSIndexRepository()
120:                                    
.getAnnotationIndex(Org.type).iterator();
121:                    StringArray orgArray = new StringArray(jcas, 100);
122:                    int order_org = 0;
123:                    while (orgIter.hasNext()) {
124:                            Org annot = (Org) orgIter.next();
125:                            orgArray.set(order_org, annot.getLex());
126:
127:                            order_org++;
128:                    }
129:                    person.setCompany_related(orgArray);
130:                    System.out.print(person.getOrg_related().toArray() + " 
");
131:
132:                    // read component descriptor for WikipPerson NEE
133:                    in = null;
134:                    jcas = null;
135:                    try {
136:                            in = new 
XMLInputSource(SRWikipediaMain.uimaDesc_wikipPersonNee);
137:                    } catch (IOException e) {
138:                            e.printStackTrace();
139:                    }
140:                    // give html to analysis engine
141:                    jcas = AnalysisEngineUtil.analyzeByAnalysisEngine(
142:                                    AnalysisEngineUtil.getAeInstance(in), 
htmlBody);
143:
144:                    // set faculty
145:                    // set schoold graduated
146:                    // set pref. candidate from
147:                    System.out.println("");
148:            }
149:
150:            // TODO write 2 data base
151:
152:            return person;
153:    }
154:
155:    private String url_keiopersons_wikipedia =
"http://ja.wikipedia.org/wiki/%E6%85%B6%E6%87%89%E7%BE%A9%E5%A1%BE%E5%A4%A7%E5%AD%A6%E3%81%AE%E4%BA%BA%E7%89%A9%E4%B8%80%E8%A6%A7";;
156:
157:    private LinkedList<PersonWikip> extractKeioPersonWikipedia() {
158:
159:            XMLInputSource in = null;
160:            try {
161:                    in = new 
XMLInputSource(SRWikipediaMain.uimaDesc_personWikip);
162:            } catch (IOException e) {
163:                    e.printStackTrace();
164:            }
165:            // create a JCas, given an Analysis Engine (ae)
166:            AnalysisEngine ae = AnalysisEngineUtil.getAeInstance(in);
167:            String docBody = 
this.dhc.doGetBody(this.url_keiopersons_wikipedia);
168:            JCas jcas = AnalysisEngineUtil.analyzeByAnalysisEngine(ae, 
docBody);
169:
170:            LinkedList<PersonWikip> personList = 
this.createPersonList(jcas);
171:            System.out.println("extractKeioPersonWikipedia: " + 
personList.size());
172:
173:            // 2007nov15/130s/this caused fatal error!!!
174:            // jcas.reset();
175:
176:            return personList;
177:    }
178:
179:    private LinkedList<PersonWikip> createPersonList(JCas jcas) {
180:            LinkedList<PersonWikip> persons = new LinkedList<PersonWikip>();
181:
182:            FSIterator personIter = jcas.getJFSIndexRepository()
183:                            
.getAnnotationIndex(PersonWikip.type).iterator();
184:            int counter = 0;
185:            while (personIter.hasNext()) {
186:                    PersonWikip p = (PersonWikip) personIter.next();
187:                    persons.add(p);
188:                    System.out
189:                                    
.println("SRWikipediaMain:createPersonList: "
190:                                                    + 
p.getPersonname().getLex() + ", URL: "
191:                                                    + p.getUrl_wikip());
192:                    counter++;
193:            }
194:            return persons;
195:    }
196:
197:    public static void main(String[] args) {
198:            new SRWikipediaMain();
199:    }
200: }
</SRWikipediaMain.java>

Isaac


On 11/20/07, Marshall Schor <[EMAIL PROTECTED]> wrote:
> Can you please post the stack trace so we can see the nesting of method
> calls leading to the null pointer exception?
>
> Thanks. -Marshall
>
> ISAO Isaac Saito wrote:
> > Thilo,
> >
> > Thank you for the comment.
> > I took following steps but the result is the same.
> >
> > 1. set /uimaj-2.2.0-incubating-bin/apache-uima/lib as a classpath
> > 2. clean compiled classes and build
> >
> > any comments will be appreciated.
> >
> > Isaac
> >
> > On 11/20/07, Thilo Goetz <[EMAIL PROTECTED]> wrote:
> >
> >> Hi,
> >>
> >> this looks like you may be referring to an old version
> >> of your JCas classes in your classpath.  The invocation
> >> exception may be caused because the old version of the
> >> Person class doesn't have the company feature yet.  Please
> >> check your classpath and make sure the classes you run
> >> with are the same ones you compile against.
> >>
> >> --Thilo
> >>
> >> ISAO Isaac Saito wrote:
> >>
> >>> Hi all,
> >>>
> >>> Could anybody has a solution to the problem I describe below?
> >>>
> >>> Thanks in adv,
> >>>  Isaac
> >>>
> >>>
> >>> - What I Want:
> >>>  set an array of String as a feature and get them
> >>>
> >>>
> >>> - Phenomenon:
> >>>
> >>>  -- Exception occurs and application terminates after executing
> >>> System.out.print(person.getCompany_related().toArray())
> >>>
> >>>  Exception in thread "main" java.lang.NullPointerException
> >>>       at 
> >>> org.apache.uima.cas.impl.CASImpl.ll_getFSForRef(CASImpl.java:2745)
> >>>
> >>>
> >>>  -- the content of variable shows "com.sun.jdi.InvocationException
> >>> occurred invoking method." after executing
> >>> person.setCompany_related(compArray).
> >>>   This can be seen by using eclipse' debug mode.
> >>>
> >>>
> >>> - java code
> >>>
> >>> private void extractNeeFromText(String descpath, String htmlBody,
> >>> Annotation person) {
> >>>       XMLInputSource in = null;
> >>>       try {
> >>>               in = new XMLInputSource(descpath);
> >>>       } catch (IOException e) {
> >>>               e.printStackTrace();
> >>>       }
> >>>       AnalysisEngine ae = AnalysisEngineUtil.getAeInstance(in);
> >>>       ResourceSpecifier specifier = null;
> >>>       AnalysisEngine ae = null;
> >>>       try {
> >>>               specifier = 
> >>> UIMAFramework.getXMLParser().parseResourceSpecifier(
> >>>                                       desc);
> >>>               ae = UIMAFramework.produceAnalysisEngine(specifier);
> >>>       } catch (InvalidXMLException e) {
> >>>               e.printStackTrace();
> >>>       } catch (ResourceInitializationException e) {
> >>>               e.printStackTrace();
> >>>       }
> >>>               JCas jcas = AnalysisEngineUtil.analyzeByAnalysisEngine(ae, 
> >>> htmlBody);
> >>>       FSIndex index = jcas.getJFSIndexRepository().getAnnotationIndex(
> >>>                               Company.type);
> >>>       StringArray compArray = new StringArray(jcas, index.size());
> >>>       FSIterator compIter = index.iterator();
> >>>       int num_company = 0;
> >>>       while (compIter.hasNext()) {
> >>>               Company annot = (Company) compIter.next();
> >>>               compArray.set(num_company, annot.getLex());
> >>>               // TODO remove redundunt values
> >>>               num_company++;
> >>>       }
> >>>       person.setCompany_related(compArray);
> >>>       System.out.println(person.getCompany_related().toArray());
> >>> }
> >>>
> >>>
> >>> - type system desctiption
> >>>
> >>> <?xml version="1.0" encoding="UTF-8"?>
> >>> <typeSystemDescription xmlns="http://uima.apache.org/resourceSpecifier";>
> >>> <name>Person-Wikip_TypeSystemDescriptor</name>
> >>> <description></description>
> >>> <version>1.0</version>
> >>> <vendor>ISAAC</vendor>
> >>> <imports>
> >>> <import 
> >>> location="../../tae_nee_apacheUima/desc/NamedEntityTypeSystemDescriptor.xml"/>
> >>> </imports>
> >>> <types>
> >>> <typeDescription>
> >>> <name>jp.ac.keio.dmc.context.srw.types.PersonWikip</name>
> >>> <description>w</description>
> >>> <supertypeName>uima.tcas.Annotation</supertypeName>
> >>> <features>
> >>> <featureDescription>
> >>> <name>company_related</name>
> >>> <description></description>
> >>> <rangeTypeName>uima.cas.StringArray</rangeTypeName>
> >>> </featureDescription>
> >>> </features>
> >>> </typeDescription>
> >>> </types>
> >>> </typeSystemDescription>
> >>>
> >>>
> >>> - Referred conversation
> >>> http://www.ibm.com/developerworks/forums/thread.jspa?threadID=129534
> >>>
> >
> >
> >

Reply via email to