Exception while executing CALDAV example

422 views
Skip to first unread message

imran zaffar

unread,
Apr 19, 2012, 7:50:41 AM4/19/12
to caldav4j
i am trying to exceute caldav4j example using Chandler server and it
is throwing exception

Exception in thread "main"
org.osaf.caldav4j.exceptions.CalDAV4JException: Unexpected status
code: 400
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not
understand.<br />
</p>
</body></html>

at
org.osaf.caldav4j.CalDAVCalendarCollection.addEvent(CalDAVCalendarCollection.java:
292)
at
org.osaf.caldav4j.example.CalDavCollectionManager.addEvent(CalDavCollectionManager.java:
214)
at
org.osaf.caldav4j.example.CalDavCollectionManager.main(CalDavCollectionManager.java:
359)
------------------------------------------------------------------------

Imran zaffar

Roberto Polli

unread,
Apr 19, 2012, 8:43:01 AM4/19/12
to cald...@googlegroups.com
Il 19 aprile 2012 13:50, imran zaffar <izaf...@hotmail.com> ha scritto:
> i am trying to exceute caldav4j example using Chandler server and it
> is throwing exception
Can you post the request pls?

Peace,
R:

>
> Exception in thread "main"
> org.osaf.caldav4j.exceptions.CalDAV4JException: Unexpected status
> code: 400
> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>400 Bad Request</title>
> </head><body>
> <h1>Bad Request</h1>
> <p>Your browser sent a request that this server could not
> understand.<br />
> </p>
> </body></html>
>
>        at
> org.osaf.caldav4j.CalDAVCalendarCollection.addEvent(CalDAVCalendarCollection.java:
> 292)
>        at
> org.osaf.caldav4j.example.CalDavCollectionManager.addEvent(CalDavCollectionManager.java:
> 214)
>        at
> org.osaf.caldav4j.example.CalDavCollectionManager.main(CalDavCollectionManager.java:
> 359)
> ------------------------------------------------------------------------
>
> Imran zaffar
>

> --
> You received this message because you are subscribed to the Google Groups "caldav4j" group.
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to caldav4j+u...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/caldav4j?hl=en.
>

Message has been deleted

imran zaffar

unread,
Apr 19, 2012, 10:33:21 AM4/19/12
to cald...@googlegroups.com

Thank you for your reply actually i am new to caldav so i don't know how to dump my request can you let me know about it plus i am trying to execute the example that comes with caldav bundle
below is the code

public static void main(String[] args) throws CalDAV4JException, SocketException, URISyntaxException {

        CaldavCredential obj_caldavCredential = new CaldavCredential();
        final String CALDAV_SERVER = obj_caldavCredential.host;
        final String CALDAV_PORT = String.valueOf(obj_caldavCredential.port);
        final String CALDAV_USER = obj_caldavCredential.user;
        final String CALDAV_PASS = obj_caldavCredential.password;

        System.out.println("Creating Caldav Client..");
        BaseCaldavClient cli = new BaseCaldavClient(CALDAV_SERVER, CALDAV_PORT,
                obj_caldavCredential.protocol,
                obj_caldavCredential.collection, CALDAV_USER, CALDAV_PASS);

        System.out.println("Opening a collection..");
        CalDavCollectionManager cdm = new CalDavCollectionManager(cli);
        cdm.setRelativePath("events");

        Random r = new Random();
        int newDay = r.nextInt(30);

        System.out.println("create a dummy event..");
        // create date for event
        Date beginDate = ICalendarUtils.createDateTime(2012, 4, 18, newDay, 0, null, true);
        Date endDate = ICalendarUtils.createDateTime(2012, 4, 19, null, true);
        Dur duration = new Dur("3H");

        // test for getByTimestamp
        Date startDTSTART = ICalendarUtils.createDateTime(2012, 4, 18, null, true);
        Date endDTSTART = ICalendarUtils.createDateTime(2012, 4, 19, null, true);

        // create new event
        VEvent nve = new VEvent(beginDate, duration, "My new event");
        cdm.addEvent(nve, null);

        System.out.println("modify the event..");
        // modify event
        Description d = new Description("Caldav4j Event");

        ParameterList pl = new ParameterList();
        pl.add(PartStat.ACCEPTED);
        Attendee invitato = new Attendee(pl, "mailto:izaf...@hotmail.com");


        ICalendarUtils.addOrReplaceProperty(nve, nve.getUid());
        ICalendarUtils.addOrReplaceProperty(nve, new Summary("I changed the summary!"));
        ICalendarUtils.addOrReplaceProperty(nve, invitato);
        ICalendarUtils.addOrReplaceProperty(nve, invitato);
        ICalendarUtils.addOrReplaceProperty(nve, d);

        // re-get event
        System.out.println("Retrieve the event..");
        Calendar pippo = cdm.getCalendarForEventUID(((HttpClient) cdm.client), nve.getUid().getValue());
        try {
            cdm.editEvent(nve, null);
        } catch (ValidationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("dump the event..\n" + pippo.toString() + "\n");


        List<String> lc = cdm.getEventPropertyByTimestamp(cdm.client, Property.UID, beginDate, endDate);
        for (String cal : lc) {
            System.out.println("UID=" + cal);
        }
    }

please help me on it i am stuck here for a week

> To unsubscribe from this group, send email to caldav4j+unsubscribe@googlegroups.com.

Roberto Polli

unread,
Apr 19, 2012, 10:43:58 AM4/19/12
to cald...@googlegroups.com
Il 19 aprile 2012 16:30, imran zaffar <izaf...@hotmail.com> ha scritto:
> Thank you for your reply actually i am new to caldav
Read those slides before playing, you'll save a lot of time
http://www.slideshare.net/mobile/ioggstream/presenting-caldav-draft-1-presentation

If you don't know HTTP take an hour to learn about HTTP.

If you don't know TCP/IP...well, you just need to know what ip and ports are :P

> so i don't know how to
> dump my request

search http.wire on this list or on google. It's enabled by default in
junit, so you just have to see eclipse console log.
Otherwise you can use wireshark or tcpdump do play the game.

If you don't use eclipse/netbeans...use eclipse/netbeans and you'll
save a lot of days :P

Can't say it from code. Dump the request and let me know.

Peace,
R.

> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.

> To view this discussion on the web visit
> https://groups.google.com/d/msg/caldav4j/-/J5xjvBvEF7AJ.


>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

> caldav4j+u...@googlegroups.com.

imran zaffar

unread,
Apr 19, 2012, 11:20:25 AM4/19/12
to cald...@googlegroups.com
Thanks again here is the http request

Adding Host request header
"Authorization: Basic amF2YWRpdmU6cGFzc3dvcmQ=[\r][\n]"
"If-None-Match: *[\r][\n]"
User-Agent: Jakarta Commons-HttpClient/3.1[\r][\n]"
"Host: hub.chandlerproject.org[\r][\n]"
"Content-Length: 256[\r][\n]"
"Content-Type: text/calendar; charset=UTF-8[\r][\n]"
"[\r][\n]"
"BEGIN:VCALENDAR[\r][\n]"
"PRODID:[\r][\n]"
"VERSION:2.0[\r][\n]"
"CALSCALE:GREGORIAN[\r][\n]"
"BEGIN:VEVENT[\r][\n]"
"DTSTAMP:20120419T151521Z[\r][\n]"
"DTSTART:20120518T130000Z[\r][\n]"
"DURATION:PT3H[\r][\n]"
"SUMMARY:My new event[\r][\n]"
"UID:20120419T201521-2951d733-e44e-4350-9905-7022e2155cf8-javadive[\r][\n]"
"END:VEVENT[\r][\n]"
"END:VCALENDAR[\r][\n]"
Request body sent

Roberto Polli

unread,
Apr 19, 2012, 11:24:20 AM4/19/12
to cald...@googlegroups.com
Good job!

Ok, now I just need:
1- the path of the request (should be a couple of lines before the request)
2 - the response.

Peace,
R.

>> > caldav4j+u...@googlegroups.com.


>> > For more options, visit this group at
>> > http://groups.google.com/group/caldav4j?hl=en.
>

> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.
> To view this discussion on the web visit

> https://groups.google.com/d/msg/caldav4j/-/X3hyWRQUngsJ.


>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

> caldav4j+u...@googlegroups.com.

Message has been deleted

imran zaffar

unread,
Apr 19, 2012, 11:44:44 AM4/19/12
to cald...@googlegroups.com
Thanks! 

Path of request
  Open connection to hub.chandlerproject.org:443
  "PUT collection/javadive/events/20120419T201521-2951d733-e44e-4350-9905-7022e2155cf8-javadive.ics HTTP/1.1[\r][\n]"

Response 
  Buffering response body
"<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">[\n]"
"<html><head>[\n]"
<title>400 Bad Request</title>[\n]"
</head><body>[\n]"
<h1>Bad Request</h1>[\n]"
"<p>Your browser sent a request that this server could not understand.<br />[\n]"
"</p>[\n]"
"</body></html>[\n]"

>> > caldav4j+unsubscribe@googlegroups.com.


>> > For more options, visit this group at
>> > http://groups.google.com/group/caldav4j?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/caldav4j/-/X3hyWRQUngsJ.
>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

> caldav4j+unsubscribe@googlegroups.com.

Roberto Polli

unread,
Apr 19, 2012, 11:57:09 AM4/19/12
to cald...@googlegroups.com
Il 19 aprile 2012 17:44, imran zaffar <izaf...@hotmail.com> ha scritto:
> Thanks!
>
> Path of request
>   Open connection to hub.chandlerproject.org:443
>   "PUT
> collection/javadive/events/20120419T201521-2951d733-e44e-4350-9905-7022e2155cf8-javadive.ics

try to add a "/" before collection...like
PUT /collection/javadive/events/20120419T201521-2951d733-e44e-4350-9905-7022e2155cf8-javadive.ics

There should be a CaldavCredential test class...I can't see the full
path in your request.
Check it!
public String host = "hub.chandlerproject.org";
public int port = 443;
public String protocol = "https";
public String user = "caldav4j";
public String home = "/dav/"+user+"/";
public String password = "CalDAV4J";
public String collection = "collection_rpolli/";

>> >> > caldav4j+u...@googlegroups.com.


>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/caldav4j?hl=en.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "caldav4j" group.
>> > To view this discussion on the web visit
>> > https://groups.google.com/d/msg/caldav4j/-/X3hyWRQUngsJ.
>> >
>> > To post to this group, send email to cald...@googlegroups.com.
>> > To unsubscribe from this group, send email to

>> > caldav4j+u...@googlegroups.com.


>> > For more options, visit this group at
>> > http://groups.google.com/group/caldav4j?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.
> To view this discussion on the web visit

> https://groups.google.com/d/msg/caldav4j/-/1HClKFAzSYYJ.


>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

> caldav4j+u...@googlegroups.com.

imran zaffar

unread,
Apr 19, 2012, 12:02:13 PM4/19/12
to cald...@googlegroups.com
this is what m using as my Credential 

public  String host = "hub.chandlerproject.org";
    public  int port = 443;
    public  String protocol = "https";
    public  String user = "javadive";
    public  String home = "/dav/"+user+"/";
    public  String password = "password";
    public  String collection      = "collection/";


>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/caldav4j?hl=en.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "caldav4j" group.
>> > To view this discussion on the web visit
>> > https://groups.google.com/d/msg/caldav4j/-/X3hyWRQUngsJ.
>> >
>> > To post to this group, send email to cald...@googlegroups.com.
>> > To unsubscribe from this group, send email to


>> > For more options, visit this group at
>> > http://groups.google.com/group/caldav4j?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/caldav4j/-/1HClKFAzSYYJ.
>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

Roberto Polli

unread,
Apr 19, 2012, 12:04:34 PM4/19/12
to cald...@googlegroups.com
Il 19 aprile 2012 18:02, imran zaffar <izaf...@hotmail.com> ha scritto:
> this is what m using as my Credential

The /dav/ string should appear in the PUT request, just after the PUT word.
I can't see it in your request.

Peace,
R.

>> >> >> > caldav4j+u...@googlegroups.com.


>> >> >> > For more options, visit this group at
>> >> >> > http://groups.google.com/group/caldav4j?hl=en.
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "caldav4j" group.
>> >> > To view this discussion on the web visit
>> >> > https://groups.google.com/d/msg/caldav4j/-/X3hyWRQUngsJ.
>> >> >
>> >> > To post to this group, send email to cald...@googlegroups.com.
>> >> > To unsubscribe from this group, send email to

>> >> > caldav4j+u...@googlegroups.com.


>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/caldav4j?hl=en.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "caldav4j" group.
>> > To view this discussion on the web visit
>> > https://groups.google.com/d/msg/caldav4j/-/1HClKFAzSYYJ.
>> >
>> > To post to this group, send email to cald...@googlegroups.com.
>> > To unsubscribe from this group, send email to

>> > caldav4j+u...@googlegroups.com.


>> > For more options, visit this group at
>> > http://groups.google.com/group/caldav4j?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.
> To view this discussion on the web visit

> https://groups.google.com/d/msg/caldav4j/-/bAHqy-E2KXQJ.


>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

> caldav4j+u...@googlegroups.com.

imran zaffar

unread,
Apr 19, 2012, 12:23:30 PM4/19/12
to cald...@googlegroups.com
Thank u very much for your reply again, i move one step ahead but it give me another exception

Exception in thread "main" org.osaf.caldav4j.exceptions.CalDAV4JException: Unexpected status code: 409
<?xml version='1.0' encoding='UTF-8'?><D:error xmlns:D="DAV:" xmlns:cosmo="http://osafoundation.org/cosmo/DAV"><cosmo:conflict>One or more intermediate collections must be created</cosmo:conflict></D:error>
at org.osaf.caldav4j.CalDAVCalendarCollection.addEvent(CalDAVCalendarCollection.java:292)
at org.osaf.caldav4j.example.CalDavCollectionManager.addEvent(CalDavCollectionManager.java:214)
at org.osaf.caldav4j.example.CalDavCollectionManager.main(CalDavCollectionManager.java:368)

please guide me on this


>> >> >> > For more options, visit this group at
>> >> >> > http://groups.google.com/group/caldav4j?hl=en.
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "caldav4j" group.
>> >> > To view this discussion on the web visit
>> >> > https://groups.google.com/d/msg/caldav4j/-/X3hyWRQUngsJ.
>> >> >
>> >> > To post to this group, send email to cald...@googlegroups.com.
>> >> > To unsubscribe from this group, send email to


>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/caldav4j?hl=en.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> > Groups
>> > "caldav4j" group.
>> > To view this discussion on the web visit
>> > https://groups.google.com/d/msg/caldav4j/-/1HClKFAzSYYJ.
>> >
>> > To post to this group, send email to cald...@googlegroups.com.
>> > To unsubscribe from this group, send email to


>> > For more options, visit this group at
>> > http://groups.google.com/group/caldav4j?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "caldav4j" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/caldav4j/-/bAHqy-E2KXQJ.
>
> To post to this group, send email to cald...@googlegroups.com.
> To unsubscribe from this group, send email to

Roberto Polli

unread,
Apr 19, 2012, 1:34:21 PM4/19/12
to cald...@googlegroups.com
Please, read the error string.

Il 19 aprile 2012 18:23, imran zaffar <izaf...@hotmail.com> ha scritto:
> Thank u very much for your reply again, i move one step ahead but it give me
> another exception
>
> Exception in thread "main" org.osaf.caldav4j.exceptions.CalDAV4JException:
> Unexpected status code: 409

> <?xml version='1.0' encoding='UTF-8'?><D:error xmlns:D="DAV:"
> xmlns:cosmo="http://osafoundation.org/cosmo/DAV"><cosmo:conflict>One or more
> intermediate collections must be created</cosmo:conflict></D:error>

It says


"One or more intermediate collections must be created"

Peace,
R.

imran zaffar

unread,
Apr 20, 2012, 2:48:18 AM4/20/12
to cald...@googlegroups.com
hi 

   I am totally stuck can't understand where to start but i am going to let you know what i wanted to achieve.
   I am  working on a project where users come and log there events/appointments in a calendar now i wanted to sync those appointments to 
   other calendars like Google cal, yahoo calendar etc for this i am using CALDAV 4j api pleaseeee let me know from where should i start.
   I am trying to run the test case some of them fail give the following exception 

   -------------------------------------------------------------------------------
Test set: org.osaf.caldav4j.CalDAVCalendarCollectionTest
-------------------------------------------------------------------------------
Tests run: 9, Failures: 7, Errors: 0, Skipped: 2, Time elapsed: 8.719 sec <<< FAILURE!
testGetCalendar(org.osaf.caldav4j.CalDAVCalendarCollectionTest)  Time elapsed: 1.281 sec  <<< FAILURE!
java.lang.AssertionError: Response status expected:<201> but was:<409>
at org.junit.Assert.fail(Assert.java:74)
at org.junit.Assert.failNotEquals(Assert.java:448)
at org.junit.Assert.assertEquals(Assert.java:102)
at org.junit.Assert.assertEquals(Assert.java:323)
at org.osaf.caldav4j.support.HttpClientTestUtils.executeMethod(HttpClientTestUtils.java:87)
at org.osaf.caldav4j.functional.support.CalDavFixture.executeMethod(CalDavFixture.java:153)
at org.osaf.caldav4j.functional.support.CalDavFixture.executeMethod(CalDavFixture.java:142)
at org.osaf.caldav4j.functional.support.CalDavFixture.put(CalDavFixture.java:222)
at org.osaf.caldav4j.functional.support.CalDavFixture.caldavPut(CalDavFixture.java:268)
at org.osaf.caldav4j.functional.support.CaldavFixtureHarness.provisionEvents(CaldavFixtureHarness.java:52)
at org.osaf.caldav4j.functional.support.CaldavFixtureHarness.provisionGoogleEvents(CaldavFixtureHarness.java:33)
at org.osaf.caldav4j.CalDAVCalendarCollectionTest.setUp(CalDAVCalendarCollectionTest.java:60)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:122)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:86)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103)
at $Proxy0.invoke(Unknown Source)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69)

testGetCalendarByPath(org.osaf.caldav4j.CalDAVCalendarCollectionTest)  Time elapsed: 1.234 sec  <<< FAILURE!
java.lang.AssertionError: Response status expected:<201> but was:<409>
at org.junit.Assert.fail(Assert.java:74)
at org.junit.Assert.failNotEquals(Assert.java:448)
at org.junit.Assert.assertEquals(Assert.java:102)
at org.junit.Assert.assertEquals(Assert.java:323)

please let me know some getting start instructions i follow and achive my goal

Roberto Polli

unread,
Apr 20, 2012, 5:22:10 AM4/20/12
to cald...@googlegroups.com

Imran,

you are trying to create an event in a collection that does not exist.

To learn the difference between collections and event, please check my slides and the rfc.

I suggest you to try to understand the errors and their meaning, otherwise you won't be able to accomplish your task.

--
You received this message because you are subscribed to the Google Groups "caldav4j" group.
To view this discussion on the web visit https://groups.google.com/d/msg/caldav4j/-/PRM6-euGo0MJ.

To post to this group, send email to cald...@googlegroups.com.
To unsubscribe from this group, send email to caldav4j+u...@googlegroups.com.

imran zaffar

unread,
Apr 20, 2012, 7:15:40 AM4/20/12
to cald...@googlegroups.com
Thanks for all your support i cannot do this without you i manage to add a collection and register an event successfully now i can move further Thanks a lot

imran
To unsubscribe from this group, send email to caldav4j+unsubscribe@googlegroups.com.

Roberto Polli

unread,
Apr 20, 2012, 8:20:01 AM4/20/12
to cald...@googlegroups.com
Il 20 aprile 2012 13:15, imran zaffar <izaf...@hotmail.com> ha scritto:
> Thanks for all your support i cannot do this without you i manage to add a
> collection and register an event successfully now i can move further


> Thanks a lot
You welcome ;)

Peace,
R.

Reply all
Reply to author
Forward
0 new messages