Hi. I did run with V2.0 API but the result was the same.
I got parse exception like this. Thanks.
警告: [Line 5, Column 1885, element gd:orgTitle]
com.google.gdata.util.ParseException: Missing required text content
Message: Missing required text content
at com.google.gdata.data.AttributeHelper.consume(AttributeHelper.java:
101)
at com.google.gdata.data.AttributeHelper.consumeContent
(AttributeHelper.java:86)
at com.google.gdata.data.ValueConstruct.consumeAttributes
(ValueConstruct.java:184)
at com.google.gdata.data.AbstractExtension
$AttributesHandler.processEndElement(AbstractExtension.java:243)
at com.google.gdata.util.XmlParser.endElement(XmlParser.java:985)
at org.xml.sax.helpers.ParserAdapter.endElement(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement
(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument
(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
Source)
at org.xml.sax.helpers.ParserAdapter.parse(Unknown Source)
at com.google.gdata.util.XmlParser.parse(XmlParser.java:675)
at com.google.gdata.util.XmlParser.parse(XmlParser.java:606)
at com.google.gdata.data.BaseFeed.parseAtom(BaseFeed.java:759)
at com.google.gdata.util.ParseUtil.parseFeed(ParseUtil.java:200)
at com.google.gdata.util.ParseUtil.readFeed(ParseUtil.java:168)
at com.google.gdata.data.BaseFeed.readFeed(BaseFeed.java:741)
at com.google.gdata.client.Service.getFeed(Service.java:965)
at com.google.gdata.client.Service.getFeed(Service.java:819)
at com.google.gdata.client.GoogleService.getFeed(GoogleService.java:
592)
at com.google.gdata.client.Service.getFeed(Service.java:838)
at jp.co.tokyu.hands.google.sso.gao.ContactListGao.init
(ContactListGao.java:86)
at
jp.co.tokyu.hands.google.sso.batch.task.GoogleAppsContactTask.updateUser
(GoogleAppsContactTask.java:93)
at
jp.co.tokyu.hands.google.sso.batch.task.GoogleAppsContactTask.execute
(GoogleAppsContactTask.java:71)
at com.yoshidumi.product.google.sso.batch.task.BatchTask.executeTask
(BatchTask.java:58)
at jp.co.tokyu.hands.google.sso.batch.task.GoogleAppsContactTask$
$EnhancedByS2AOP$$1098594.$$executeTask$$invokeSuperMethod$$
(GoogleAppsContactTask$$EnhancedByS2AOP$$1098594.java)
at jp.co.tokyu.hands.google.sso.batch.task.GoogleAppsContactTask$
$EnhancedByS2AOP$$1098594$$MethodInvocation$$executeTask0.proceed
(MethodInvocationClassGenerator.java)
at org.seasar.extension.tx.RequiredInterceptor.invoke
(RequiredInterceptor.java:48)
at jp.co.tokyu.hands.google.sso.batch.task.GoogleAppsContactTask$
$EnhancedByS2AOP$$1098594$$MethodInvocation$$executeTask0.proceed
(MethodInvocationClassGenerator.java)
at jp.co.tokyu.hands.google.sso.batch.task.GoogleAppsContactTask$
$EnhancedByS2AOP$$1098594.executeTask(GoogleAppsContactTask$
$EnhancedByS2AOP$$1098594.java)
at com.yoshidumi.product.google.sso.batch.task.BatchTask.call
(BatchTask.java:72)
at com.yoshidumi.product.google.sso.batch.task.BatchTask.call
(BatchTask.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
On Jan 10, 7:30 pm, Dummy <[email protected]> wrote:
> Hi, Julian.
>
> I would paste my source code although it may contain no concern with
> this issue..
> Now,I figure out this parse exception may happen just adding contact
> records.
> The steps is just calling this method 100 over times.
> It happend just adding the contacts records with no groups.
>
> I would also try with API V2, and let you know the results later.
>
> Thanks.
>
> Source code.
> #####
> public ContactEntry createContact(String createUserAddress,
> UserMaster userMaster)
> throws ServiceException, IOException {
>
> //既存のエントリの場合は再利用するために取得する。
> ContactEntry contact =
> getContactEntryByMail(createUserAddress,
> userMaster.getMail());
>
> Boolean isNew = false;
>
> //contactがnullの場合は新規作成となる。
> if(contact == null) {
> contact = new ContactEntry();
> isNew = true;
> }else{
> //更新の場合は一旦初期化する。
> contact.getPhoneNumbers().clear();
> contact.getPostalAddresses().clear();
> contact.getEmailAddresses().clear();
> }
>
> String value = userMaster.getDisplayname();
> contact.setTitle(new PlainTextConstruct(value));
>
> Email primaryMail = new Email();
> primaryMail.setAddress(userMaster.getMail());
> primaryMail.setRel("http://schemas.google.com/g/2005#work");
> primaryMail.setPrimary(true);
> contact.addEmailAddress(primaryMail);
>
> // 会社電話番号の登録部分***********
> if(userMaster.getTelephonenumber() != null &&
> userMaster.getTelephonenumber().length() > 0 ) {
> PhoneNumber workPn = new PhoneNumber();
>
> workPn.setPhoneNumber(userMaster.getTelephonenumber());
>
> workPn.setRel("http://schemas.google.com/g/2005#work");
> contact.addPhoneNumber(workPn);
> }
> // ポケットベルの登録部分(ハンズ用件では内線番号)***********
> if(userMaster.getPager() != null &&
> userMaster.getPager().length() >
> 0 ) {
> PhoneNumber pocketBeeper = new PhoneNumber();
> pocketBeeper.setPhoneNumber(userMaster.getPager());
>
> pocketBeeper.setRel("http://schemas.google.com/g/2005#other");
> contact.addPhoneNumber(pocketBeeper);
> }
> // Fax電話番号の登録部分***********
> if(userMaster.getFacsimiletelephonenumber() != null &&
> userMaster.getFacsimiletelephonenumber().length() > 0) {
> PhoneNumber faxPn = new PhoneNumber();
>
> faxPn.setPhoneNumber(userMaster.getFacsimiletelephonenumber());
> faxPn.setRel("http://schemas.google.com/g/2005#fax");
> contact.addPhoneNumber(faxPn);
> }
> // 携帯電話の登録部分***********
> if(userMaster.getMobile() != null &&
> userMaster.getMobile().length()> 0) {
>
> PhoneNumber mobilePn = new PhoneNumber();
> mobilePn.setPhoneNumber(userMaster.getMobile());
>
> mobilePn.setRel("http://schemas.google.com/g/2005#mobile");
> contact.addPhoneNumber(mobilePn);
> }
>
> // 住所情報の登録部分
> PostalAddress pa = new PostalAddress();
> String tempAddress = "-";
> // 都道府県の取得
> if(userMaster.getSt() != null && userMaster.getSt().length()
> > 0 ){
> tempAddress = userMaster.getSt();
> }
> // 市区町村の取得
> if(userMaster.getL() != null && userMaster.getL().length() >
> 0 ){
> tempAddress = tempAddress + userMaster.getL();
> }
> // 番地の取得
> if(userMaster.getStreetaddress() != null &&
> userMaster.getStreetaddress().length() > 0 ){
> tempAddress = tempAddress +
> userMaster.getStreetaddress();
> }
> pa.setValue(tempAddress);
> pa.setRel("http://schemas.google.com/g/2005#work");
> contact.addPostalAddress(pa);
>
> Organization org = new Organization();
> OrgName orgName = new OrgName("-");
> OrgTitle orgTitle = new OrgTitle("-");
>
> if(userMaster.getTitle() != null &&
> userMaster.getTitle().length()>0)
> {
> orgName = new OrgName(userMaster.getTitle());
> }
>
> if(userMaster.getDepartment() != null &&
> userMaster.getDepartment
> ().length()>0){
> orgTitle = new OrgTitle(userMaster.getDepartment());
> }
> org.setOrgName(orgName);
> org.setOrgTitle(orgTitle);
> org.setRel("http://schemas.google.com/g/2005#work");
> contact.addOrganization(org);
>
> if(isNew){
> //管理者の場合はドメインのSharedContactにする。
>
> if(createUserAddress.equals(envConst.getAdminEmail())){
> createUserAddress =
> envConst.getDomainUrlBase();
> }
>
> URL postUrl = new
> URL("http://www.google.com/m8/feeds/contacts/" +
> createUserAddress + "/full");
> return contactService.insert(postUrl, contact);
> }else{
> URL editUrl = new
> URL(contact.getEditLink().getHref());
> return contactService.update(editUrl, contact);
> }
> }
>
> On Jan 9, 11:25 pm, "Julian (Google)" <[email protected]> wrote:
>
> > Hi,
>
> > We had a similar thread in the
> > past:http://groups.google.com/group/google-contacts-api/browse_thread/thre...
>
> > Are you trying to update/add Organization Name or Job Title? It is
> > necessary to include the label for those fields. Maybe there is a data
> > problem for some of the users, they are missing information and this
> > could be the problem.
>
> > Can you tell me specific steps to reproduce the problem? Did you use a
> > third party tool to sync contacts? I'll like to find if there is a bug
> > on the API.
>
> > Also, I think it would be a good idea to try Contacts API V2, there
> > is a Java Client
> > available:http://code.google.com/apis/contacts/docs/2.0/developers_guide_java.html
>
> > Cheers,
> > Julian.
>
> > On Jan 1, 1:38 pm, Dummy <[email protected]> wrote:
>
> > > Hi.
> > > I got following error when I get a user's contact list as currentPage
> > > = contactService.getFeed(postUrl, ContactFeed.class);
> > > This does work some users but not for some users.
> > > The error message is like this. I am using contact api 1.0 java
> > > client.
>
> > > ###
> > > Warning: [Line 1, Column 4256, element gd:orgName]
> > > com.google.gdata.util.ParseException: Missing required text content
> > > Message: Missing required text content
>
> > > at com.google.gdata.data.AttributeHelper.consume(Unknown Source)
> > > at com.google.gdata.data.AttributeHelper.consumeContent(Unknown
> > > Source)
> > > at com.google.gdata.data.ValueConstruct.consumeAttributes(Unknown
> > > Source)
> > > at com.google.gdata.data.AbstractExtension
> > > $AttributesHandler.processEndElement(Unknown Source)
> > > at com.google.gdata.util.XmlParser.endElement(Unknown Source)
> > > at
> > > org.xml.sax.helpers.ParserAdapter.endElement(ParserAdapter.java:
> > > 626)
> > > at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> > > Source)
> > > at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement
> > > (Unknown Source)
> > > at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
> > > $FragmentContentDispatcher.dispatch(Unknown Source)
> > > at
> > > org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument
> > > (Unknown Source)
> > > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> > > Source)
> > > at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
> > > Source)
> > > at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> > > at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
> > > Source)
> > > at
> > > org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown
> > > Source)
> > > at org.xml.sax.helpers.ParserAdapter.parse(ParserAdapter.java:405)
> > > at com.google.gdata.util.XmlParser.parse(Unknown Source)
> > > at com.google.gdata.util.XmlParser.parse(Unknown Source)
> > > at com.google.gdata.data.BaseFeed.parseAtom(Unknown Source)
> > > at com.google.gdata.data.BaseFeed.readFeed(Unknown Source)
> > > at com.google.gdata.client.Service.getFeed(Unknown Source)
> > > at com.google.gdata.client.Service.getFeed(Unknown Source)
> > > at com.google.gdata.client.GoogleService.getFeed(Unknown Source)
> > > at com.google.gdata.client.Service.getFeed(Unknown Source)
> > > ####
> > > When this happen this user's contact list cannot be touched.
> > > I figure out a contact data causes this. And when I delete or save
> > > from web browser, this won't happen for the user.
> > > But I need to maintain users contact list with batch.
>
> > > What causes this? and is there any workaround?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Contacts API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-contacts-api?hl=en
-~----------~----~----~----~------~----~------~--~---