Error in ODK Manage - send SMS notification

Hello ODK Developers,

I received the following stacktrace while posting SMS notification to
registered devices in ODK Manage

Uncaught exception from servlet
java.lang.NullPointerException
at org.odk.manage.server.servlet.DoActionServlet.handleNonTaskAction(DoActionServlet.java:142)
at org.odk.manage.server.servlet.DoActionServlet.doPost(DoActionServlet.java:89)

These are top two lines of the code. Can anyone sort/had sorted this out?

Himanshu Bansal

i haven't looked at manage in ages, but the sms functionality won't work
if it's deployed on app engine.

when we built manage, we were internal to google and so we could do
fancy (and free) things like sending sms. now that we are external,
the sms support is
no longer available. until the app engine team adds an sms api, it won't work...

perhaps you could look at connecting manage to something like

··· On Mon, Sep 12, 2011 at 12:12, Himanshu Bansal wrote: > Hello ODK Developers, > > I received the following stacktrace while posting SMS notification to > registered devices in ODK Manage > > Uncaught exception from servlet > java.lang.NullPointerException > at > org.odk.manage.server.servlet.DoActionServlet.handleNonTaskAction(DoActionServlet.java:142) > at > org.odk.manage.server.servlet.DoActionServlet.doPost(DoActionServlet.java:89) > > > > These are top two lines of the code. Can anyone sort/had sorted this out? > > Himanshu Bansal > >

Ok. But I request you to put a handle on that operation on ODK Manage now,
it's showing a stacktrace!.

So that, in future, redundant posts do not arise here.

Himanshu Bansal

please file a bug or even better submit a patch.

··· On Mon, Sep 12, 2011 at 12:50, Himanshu Bansal wrote: > Ok. But I request you to put a handle on that operation on ODK Manage now, > it's showing a stacktrace!. > > So that, in future, redundant posts do not arise here. > > Himanshu Bansal > > >

What about FrontLineSMS, WinSMS and Clickatell. I can also use that, right?

Haha...

I will submit a bug first. Will submit a patch after attaching with some
free (almost) SMS API.

Himanshu

if those tools have a web api you can call, then use. if not, then no.

··· On Mon, Sep 12, 2011 at 12:53, Himanshu Bansal wrote: > What about FrontLineSMS, WinSMS and Clickatell. I can also use that, right? > > >

In the ODK Aggregate, when we include the location widget in our forms, and
complete that form (is-meta-complete = true), then only it shows location,
even if in false state, we have given location. Is this deliberate? What if
the surveyor does not fill optional fields, then we may not get location.

Also, my "meta-model-version" and "meta-ui-version" fields always remain
empty. Are they related to ODK Manage server, or anything else, please
clarify.

Himanshu

Be sure you have upgraded to the recent Beta 4. There were a number of bugs
in Beta 3 that could have caused the problems you're reporting.
In particular, if you uploaded a form in beta 3, all data after the first
missing image/audio/video clip would not be recorded; in beta 4, all data is
recorded.

The model-version and ui-version are in support of the OpenRosa metadata
attributes:
https://bitbucket.org/javarosa/javarosa/wiki/OpenRosaMetaDataSchema If you
aren't using them, they will be blank. Note that Aggregate 1.0 captures and
tracks these, but it requires that there be only one version of a form
defined at all times. I.e., operating with multiple versions of the same
form is not supported.

Mitch

··· On Mon, Sep 12, 2011 at 4:00 AM, Himanshu Bansal wrote:

In the ODK Aggregate, when we include the location widget in our forms, and
complete that form (is-meta-complete = true), then only it shows location,
even if in false state, we have given location. Is this deliberate? What if
the surveyor does not fill optional fields, then we may not get location.

Also, my "meta-model-version" and "meta-ui-version" fields always remain
empty. Are they related to ODK Manage server, or anything else, please
clarify.

Himanshu

--
Mitch Sundt
Software Engineer
http://www.OpenDataKit.org
University of Washington
mitchellsundt@gmail.com

Himanshu,

ODK Manage contains interfaces and example code for connecting to external
SMS APIs. Take a look at:

http://code.google.com/p/opendatakit/source/browse/server/src/org/odk/manage/server/sms/ExampleSmsService.java?repo=manage

There's some sample code for how to interface with an external SMS API. You
basically need (a) a sendSMS() that talks to the SMS service when ODK Manage
needs to send an SMS, and (b) a listener that receives SMS messages from the
service, generally by setting up a servlet on ODK Voice that the service
posts messages to. Feel free to ask for more information on the list.

Adam

··· On Mon, Sep 12, 2011 at 2:13 PM, Mitch Sundt wrote:

Be sure you have upgraded to the recent Beta 4. There were a number of
bugs in Beta 3 that could have caused the problems you're reporting.
In particular, if you uploaded a form in beta 3, all data after the first
missing image/audio/video clip would not be recorded; in beta 4, all data is
recorded.

The model-version and ui-version are in support of the OpenRosa metadata
attributes:
https://bitbucket.org/javarosa/javarosa/wiki/OpenRosaMetaDataSchema If
you aren't using them, they will be blank. Note that Aggregate 1.0 captures
and tracks these, but it requires that there be only one version of a form
defined at all times. I.e., operating with multiple versions of the same
form is not supported.

Mitch

On Mon, Sep 12, 2011 at 4:00 AM, Himanshu Bansal <him.albert.sal@gmail.com wrote:

In the ODK Aggregate, when we include the location widget in our forms,
and complete that form (is-meta-complete = true), then only it shows
location, even if in false state, we have given location. Is this
deliberate? What if the surveyor does not fill optional fields, then we may
not get location.

Also, my "meta-model-version" and "meta-ui-version" fields always remain
empty. Are they related to ODK Manage server, or anything else, please
clarify.

Himanshu

--
Mitch Sundt
Software Engineer
http://www.OpenDataKit.org
University of Washington
mitchellsundt@gmail.com

Thanks Adam and Mitch.

I have upgraded by ODK Aggregate to v1 beta 4.

But there is a problem, after setting it up on an App engine application, it
refreshes again and again, whenever I press any button on it.

Himanshu

Hi Himanshu,

When upgrading across the betas, you need to either always deploy it to a
newly created appspot instance
or follow the detailed migration instructions in the release notes
http://code.google.com/p/opendatakit/wiki/AggregateReleaseNotes

In this case, for Beta 4, there was a significant schema change that
requires deleting all data in the appspot instance. If you don't you get
the refresh problem you describe.

Mitch

··· On Mon, Sep 12, 2011 at 9:52 PM, Himanshu Bansal wrote:

Thanks Adam and Mitch.

I have upgraded by ODK Aggregate to v1 beta 4.

But there is a problem, after setting it up on an App engine application,
it refreshes again and again, whenever I press any button on it.

Himanshu

--
Mitch Sundt
Software Engineer
http://www.OpenDataKit.org
University of Washington
mitchellsundt@gmail.com

Correct, i found that article later. My bad luck. Thanks mitch.

··· On 9/14/11, Mitch Sundt wrote: > Hi Himanshu, > > When upgrading across the betas, you need to either always deploy it to a > newly created appspot instance > or follow the detailed migration instructions in the release notes > http://code.google.com/p/opendatakit/wiki/AggregateReleaseNotes > > In this case, for Beta 4, there was a significant schema change that > requires deleting all data in the appspot instance. If you don't you get > the refresh problem you describe. > > Mitch > > On Mon, Sep 12, 2011 at 9:52 PM, Himanshu Bansal wrote: > >> Thanks Adam and Mitch. >> >> I have upgraded by ODK Aggregate to v1 beta 4. >> >> But there is a problem, after setting it up on an App engine application, >> it refreshes again and again, whenever I press any button on it. >> >> Himanshu >> >> > > > -- > Mitch Sundt > Software Engineer > http://www.OpenDataKit.org > University of Washington > mitchellsundt@gmail.com >

--
Sent from my mobile device

ODK Developers,

I have a simple doubt, how to get submissions on the localhost copy of
Aggregate.

Himanshu

Himanshu,

We need more information than this to help.

Have you uploaded a form?
Have you set the permissions properly?
How are you trying to upload the submissions?

Waylon

··· On Mon, Sep 19, 2011 at 12:41 AM, Himanshu Bansal wrote: > ODK Developers, > > I have a simple doubt, how to get submissions on the localhost copy of > Aggregate. > > Himanshu >

Ok, I have figured out the submission part.

Next problem:

I want to customize maps screen (map.html). How to get visualization
components on localhost?

it's all in code.

http://code.google.com/p/opendatakit/source/browse/src/main/java/org/opendatakit/aggregate/client/popups/VisualizationPopup.java?repo=aggregate&name=v1_0

··· On Mon, Sep 19, 2011 at 11:02, Himanshu Bansal wrote: > Ok, I have figured out the submission part. > > Next problem: > > I want to customize maps screen (map.html). How to get visualization > components on localhost? > > >

I saw that code, but how to checkout all Aggregate components, and deploy
and run it on localhost, so that front screen exactly matches that one of
the deployed one on Appengine instance.

Also, I would like to run that local instance on PHP MySQL instead of
datastore, is this all possible?

I have tried checking out all Aggregate components, along with main
Aggregate repository, but they all come as different projects in eclipse...

Also, when I am importing my Aggregate into Eclipse using Mercurial plugin,
and run the local instance, I get the following error:

java.lang.NoClassDefFoundError:
com/google/appengine/api/users/UserServiceFactory
at org.odk.aggregate.servlet.ServletUtilBase.verifyCredentials(ServletUtilBase.java:111)
at org.odk.aggregate.servlet.FormsServlet.doGet(FormsServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80)
at com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:247)
at com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.ClassNotFoundException:
com.google.appengine.api.users.UserServiceFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 50 more

Caused by:

java.lang.ClassNotFoundException:
com.google.appengine.api.users.UserServiceFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.odk.aggregate.servlet.ServletUtilBase.verifyCredentials(ServletUtilBase.java:111)
at org.odk.aggregate.servlet.FormsServlet.doGet(FormsServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80)
at com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:247)
at com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Plz help!!!

This is a problem with the google plugin for app engine. I know the
suggestions on the eclipse debugging suggestions sound simple and
don't look like they do much but they basically cause the plugin to
rebuild everything. Make sure the app is stopped when you do it.

http://code.google.com/p/opendatakit/wiki/EclipseDebugging

If you would like to use mysql have you tried our installer that
configures it all for you? If you want to do it manually you need to
use V1_0 branch as there are multiple projects setup for the various
platforms. You will want the mysql project. I highly recommend using
our installer as there are lots of setup that is needed.

http://code.google.com/p/opendatakit/wiki/AggregatePostgresqlInstall

Customization help (not sure how up to date it is).

http://code.google.com/p/opendatakit/wiki/AggregateDeploymentConfiguration

··· On Mon, Sep 26, 2011 at 5:33 AM, Himanshu Bansal wrote: > Also, when I am importing my Aggregate into Eclipse using Mercurial plugin, > and run the local instance, I get the following error: > > java.lang.NoClassDefFoundError: > com/google/appengine/api/users/UserServiceFactory > at > org.odk.aggregate.servlet.ServletUtilBase.verifyCredentials(ServletUtilBase.java:111) > at org.odk.aggregate.servlet.FormsServlet.doGet(FormsServlet.java:62) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) > at > com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) > at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) > at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) > at > com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80) > at > com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:247) > at > com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) > at > com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at > com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > Caused by: java.lang.ClassNotFoundException: > com.google.appengine.api.users.UserServiceFactory > at java.net.URLClassLoader$1.run(Unknown Source) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(Unknown Source) > at java.lang.ClassLoader.loadClass(Unknown Source) > at > com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) > at java.lang.ClassLoader.loadClass(Unknown Source) > ... 50 more > > Caused by: > > java.lang.ClassNotFoundException: > com.google.appengine.api.users.UserServiceFactory > at java.net.URLClassLoader$1.run(Unknown Source) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(Unknown Source) > at java.lang.ClassLoader.loadClass(Unknown Source) > at > com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:176) > at java.lang.ClassLoader.loadClass(Unknown Source) > at > org.odk.aggregate.servlet.ServletUtilBase.verifyCredentials(ServletUtilBase.java:111) > at org.odk.aggregate.servlet.FormsServlet.doGet(FormsServlet.java:62) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) > at > com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) > at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) > at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) > at > com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:80) > at > com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:247) > at > com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) > at > com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at > com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:351) > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) > at > org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) > > Plz help!!! > >