Boost Extensibility and Simplify Maintainability of Web Applications: Proposals for Google Web Toolkit Plug-in Architectures

2011-01-17 Thread Ingo Jaeckel
Hello everyone

I wrote a short article proposes a plug-in management architecture for
GWT/AppEngine applications, see
http://honeycrm.googlecode.com/files/BoostExtensibilityAndSimplifyMaintainabilityOfWebApplicationsProposalsForGoogleWebToolkitPlugInArchitectures.pdf.
Now, I would like to invite the community to discuss my proposal.
Thanks in advance to everyone for reading and discussing the proposal.

Abstract: The extensibility of Google Web Toolkit (GWT) applications
running on the Google App Engine platform is currently limited due to
the absence of a plug-in infrastructure. Even though for desktop,
server, and web applications, plug-ins have been existing for decades,
they are not prevalent in GWT today. In this article, I outline the
development environment restrictions that make it a challenge to
provide dynamic plug-in loading support. I assume that the
introduction of a plug-in architecture would dramatically enhance the
extensibility and the maintainability of GWT applications. Therefore,
this article proposes approaches for statically and dynamically loaded
plug-ins for GWT applications.

Kind regards

Ingo

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



Re: Boost Extensibility and Simplify Maintainability of Web Applications: Proposals for Google Web Toolkit Plug-in Architectures

2011-01-17 Thread Ingo Jaeckel
Hello everyone

after discussing the topic with a college, I realized I have to
explain the context of my proposal.

There is no application independent mechanism in GWT to dynamically
load extensions. Consequently, GWT applications either do not support
it or implement plug-in loading on their own. I am convinced this has
to be changed, mainly because of two obervations: The dramatically
increasing popularity of both (1) AppStores, e.g. Apple App Store,
Android Market, and (2) browser/web applications. To support AppStore
concepts in web applications, the GWT/AppEngine community would profit
from having an application independent framework for the management of
application extensions, i.e. plug-ins, apps, or add-ons.

Kind regards

Ingo

2011/1/17 Ingo Jaeckel ingo.jaec...@googlemail.com:
 Hello everyone

 I wrote a short article proposes a plug-in management architecture for
 GWT/AppEngine applications, see
 http://honeycrm.googlecode.com/files/BoostExtensibilityAndSimplifyMaintainabilityOfWebApplicationsProposalsForGoogleWebToolkitPlugInArchitectures.pdf.
 Now, I would like to invite the community to discuss my proposal.
 Thanks in advance to everyone for reading and discussing the proposal.

 Abstract: The extensibility of Google Web Toolkit (GWT) applications
 running on the Google App Engine platform is currently limited due to
 the absence of a plug-in infrastructure. Even though for desktop,
 server, and web applications, plug-ins have been existing for decades,
 they are not prevalent in GWT today. In this article, I outline the
 development environment restrictions that make it a challenge to
 provide dynamic plug-in loading support. I assume that the
 introduction of a plug-in architecture would dramatically enhance the
 extensibility and the maintainability of GWT applications. Therefore,
 this article proposes approaches for statically and dynamically loaded
 plug-ins for GWT applications.

 Kind regards

 Ingo


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



Proposal of several plug-in architectures for GWT applications running on the Google App Engine platform

2011-01-07 Thread Ingo Jaeckel
Hello everyone,

this week I published an article entitled Proposals for Google Web
Toolkit application plug-in architectures [1] on of my HoneyCRM
project page [2]. The existence of plug-ins is not new for web
applications in general. However, there are a number of technical
issues making it difficult to develop plug-ins for GWT applications.
In the article I propose solutions around these problems.

The implementation of a plug-in system has been discussed a lot of
times in the community. I am looking forward for your feedback and
thoughts about my proposals. You can find more information as well as
prototype implementations in the wiki [3].

Kind regards,
Ingo

[1] 
http://honeycrm.googlecode.com/files/ProposalsForGoogleWebToolkitApplicationPlugInArchitectures.pdf
[2] http://code.google.com/p/honeycrm/
[3] http://code.google.com/p/honeycrm/w/list

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



Developing an AppStore for a GWT / App Engine application?

2010-10-04 Thread Ingo Jaeckel
hello everyone,

i want to build an app store for a GWT application. users should open
the app store from within the application, browse through apps and
install them like they are used to it from other app stores e.g. apple
app store or android market. i outlined my ideas about it in the wiki
of my project http://code.google.com/p/honeycrm/wiki/Plugins
(including a more detailed description of the store, apps and sequence
diagrams of the installation process).

- has something like this been done before?
- are there any best practices on this topic?
- is it realistically i.e. a good idea to put source code into the
plugin package (e.g. a zip file) and do the transformations
(compilation of .java - .class using javac and .java - .js using
GWTs compiler)? see
http://code.google.com/p/honeycrm/wiki/Plugins#installation_of_plugins
- can i do this within google app engine or do i have to use another
servlet container e.g. for compilation.

kind regards,
ingo

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



How to run my DETAILED/PRETTY compiled GWT application locally / on app engine?

2010-09-02 Thread Ingo Jaeckel
hello everyone,

i want to profile the client side code of my gwt application honeycrm.
a lot of times i read i just have to compile my application with
pretty or detailed output style. then i should run and profile it e.g.
with firebug.

compiling my app with another output style is easy i.e. integrated
into the eclipse gwt plugin. but evertime i run my application from
eclipse it is recompiled with obfuscated output style. when i compile
it using detailed and then deploy it to app engine, the gwt plugin
in eclipse compiles it again and deploys the obfuscated js code.

how can i avoid the recompilation to obfuscated code and instead run
the js code compiled with detailed output style locally / when
deployed to app engine? i found no documentation/tutorials about this
yet.. thanks everyone in advance!

kind regards,
ingo

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



Screencast demonstrating how to profile a GWT application with JProfiler 6

2010-08-19 Thread Ingo Jaeckel
hello everyone,

some days ago i tried to profile my gwt application and started a
discussion on the google app engine mailing list about the topic
http://groups.google.com/group/google-appengine-java/browse_thread/thread/ec21bf87d57f8a82#

just wanted to let you know that i created a 3 minute screencast
showing how it works http://www.youtube.com/watch?v=zUJUSxXOOa4

sorry for the delay when my app runs locally being profiled :) i hope
this screencast helps everyone who wants to increase his apps
performance.

kind regards,
ingo

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



How to implement pagination using GWT 2.1 M2 SimplePager?

2010-08-17 Thread Ingo Jaeckel
hello everyone,

i am using the second milestone of gwt 2.1 mostly because of the new
list view related classes (e.g. ListViewAdapter, SimplePager,
PagingListView, SingleSelectionModel, etc.). based on these new
classes i implemented my own ListView class. i retrieve a couple of
dto objects from the server side and insert them into the list view
using ListViewAdapter.setList and CellTable.setDataSize. i also found
the following example that shows pagination should work like charm in
gwt 2.1 m2: see http://gwt-bikeshed.appspot.com/Scaffold.html and
source here http://google-web-toolkit.googlecode.com/svn/trunk/bikeshed/

unfortunately, in my own ListView class that is using all the new gwt
classes the pagination does not work at all (see code here lines
293-324 of 
http://code.google.com/p/honeycrm/source/browse/branches/honeycrm_r134_gwt2.1m2/src/honeycrm/client/view/ListView.java).
the values are not inserted into the listview and the item count (page
count) is not properly updated (or set at all). everytime the pager
receives a onRangeOrSizeChanged event I call refreshPage(newPage) if
the page number really has changed. this does an RPC call retrieving
the values from the server and inserting them by calling
refreshListViewValues(). this is how it looks like:

protected void initListView() {
pager = new SimplePagerDto(ct = new CellTableDto(), 
TextLocation.CENTER) {
@Override
public void onRangeOrSizeChanged(final 
PagingListViewDto listView) {
super.onRangeOrSizeChanged(listView);

/**
 * only do something if items have already been 
loaded
 */
if (itemsHaveBeenLoadedOnce) {
final int newPage = 1 + 
listView.getPageStart() / listView.getPageSize();
final boolean changedPage = newPage != 
currentPage;

if (changedPage) {
refreshPage(newPage); // this 
does a RPC calling
refreshListViewValues on sucess
}
}
};
};

}

protected void refreshListViewValues(ListQueryResult result) {
if (!itemsHaveBeenLoadedOnce) {
initListView();
itemsHaveBeenLoadedOnce = true;
}

ArrayListDto values = new ArrayListDto();
for (final Dto dto : result.getResults()) {
values.add(dto);
}

ct.setDataSize(result.getItemCount(), true); // ct is the cell 
table instance

// give the ListViewAdapter our data
lva.setList(values);
lva.refresh();
}

does anyone have a very simple working example explaining the
principle? i do not really understand the bikeshed code. i learned
the use of the new API from here
http://stackoverflow.com/questions/2891803/how-to-use-gwt-2-1-data-presentation-widgets.
currently i do not understand how to put all those new classes
together in a small, concise and working example.

kind regards,
ingo

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



developers, developers, developers: who wants to participate in creating a new opensource crm/erp software?

2010-07-01 Thread Ingo Jaeckel
hello guys,

after customizing, migrating and suffering for challenging sugarcrm
projects for more than two years now i am currently working on a
replacement for our sugarcrm extension open quotes and contracts aka
openqc. the project is called honeycrm
http://code.google.com/p/honeycrm/. have a look at the current
development snapshot on google app engine
http://honeyyycrm.appspot.com/

even in this early stage the powerful tools and java enables us to let
the project grow fast and keep the quality at a high level. more
information about our vision can be found in our commandments
http://code.google.com/p/honeycrm/wiki/10commandments

we are looking for developers who want to participate and contribute
to the open source (GPLv3) project: we need a lot more manpower for
all sorts of things: reviewing code, doing a design, writing bullet
proof test cases, implementing all sorts of features, keeping the ui
responsive, etc.

check out the source code via svn: svn checkout
http://honeycrm.googlecode.com/svn/trunk/ honeycrm-read-only
you can also become a project member very fast and get write access to
the repository.

i am looking forward for your feedback!

kind regards,
ingo

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To post to this group, send email to google-web-tool...@googlegroups.com.
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.



Re: Testing client code fails with JDOFatalUserException: Duplicate PMF name

2010-06-29 Thread Ingo Jaeckel
hello acerezo,

i do not think that i really solved the issue. nevertheless i coded
around it a bit and now i can run server side AND client side code
test cases without any problems. feel free to browse through the
honeycrm sourcecode to see how i did it:
http://code.google.com/p/honeycrm/source/browse/#svn/trunk/src/honeycrm/client/test

important to note is the following: since the service (communication
from client to server side) could not be constructed using
gwt.create() when the client side tests are running, i decided to
replace the service before running the tests: see
http://code.google.com/p/honeycrm/source/browse/trunk/src/honeycrm/client/test/AbstractClientTest.java
and 
http://code.google.com/p/honeycrm/source/browse/trunk/src/honeycrm/client/ServiceRegistry.java

the result is not really satisfying since i cannot run the ui code
test cases and use the correct service (that will be used in
production mode). however, i can at least test all the other stuff and
i can test the ui code with a dummy service if i want to. of course, i
still want to have a real solution (instead of this dirty workaround)
allowing me to test the client code properly. but since i found no
solution yet and the google guys did not help me out either i had to
go on with this workaround until some gwt guru comes and fixes my
issue.

by the way: i am looking for developers who are interested in
participating in the honeycrm project. we welcome everyone who wants
to contribute and give feedback to the project!

kind regards,
ingo

2010/6/28 Acerezo acerezoguil...@gmail.com:
 Hello I've the same problem Did you find the solution?

 Thanks.

 On Jun 7, 10:13 am, ingo ingo.jaec...@googlemail.com wrote:
 hello google,

 believe it or not but this seems to be a problem as huherto wrote on
 the mailing list in earlier this year. unfortunately, he did not
 receive an answer either:

 http://groups.google.com/group/google-web-toolkit/browse_thread/threa...

 would appreciate a quick response to this issue.

 kind regards,
 ingo

 On 3 Jun., 11:42, ingo ingo.jaec...@googlemail.com wrote:

  as a workaround i removed the jdoconfig.xml file from the src/WEB-INF
  directory and from the war/WEB-INF/classes/META-INF directory. then i
  instantiated the persistence manager factory by using a map like the
  following:

                  final MapString, String map = new HashMapString, 
  String();
                  map.put(javax.jdo.PersistenceManagerFactoryClass,
  org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory);
                  map.put(javax.jdo.option.ConnectionURL, appengine);
                  map.put(javax.jdo.option.NontransactionalRead, true);
                  map.put(javax.jdo.option.NontransactionalWrite, true);
                  map.put(javax.jdo.option.RetainValues, true);
                  map.put(datanucleus.appengine.autoCreateDatastoreTxns, 
  true);

                 pmf= JDOHelper.getPersistenceManagerFactory(map);

  this somehow lets the test run successfully but throws the following
  exception nevertheless:

  [WARN] StandardContext[]Exception while dispatching incoming RPC call
  com.google.gwt.user.server.rpc.UnexpectedException: Service method
  'public abstract crm.client.dto.AbstractDto
  crm.client.CommonService.get(int,long)' threw an unexpected exception:
  java.lang.NullPointerException:NoAPIenvironmentisregisteredfor
  thisthread.
          at
  com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:
  378)
          at
  com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
  581)
          at
  com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
  188)
          at
  com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
  224)
          at
  com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
  62)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
          at
  com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:
  288)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
          at
  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
  237)
          at
  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
  157)
          at
  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
  214)
          at
  org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:
  104)
          at
  org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
  520)
          at
  org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:
  198)
          at
  

Re: Testing client code fails with JDOFatalUserException: Duplicate PMF name

2010-06-29 Thread Ingo Jaeckel
hello andrés,

great to hear that you checked out the sourcecode. aaah and thank you
very much for the hint! i just added the missing jar file to the
repository.

kind regards,
ingo

2010/6/29 Andrés Cerezo acerezoguil...@gmail.com:
 Hello, I'have a problem with import com.google.gwt.visualization.*; ¿perhaps
 the jar is not in the svn?.

 Thanks.

 2010/6/29 Andrés Cerezo acerezoguil...@gmail.com

 ok, I'll check out the source code and I'll tell you.

 Thanks.

 2010/6/29 Ingo Jaeckel ingo.jaec...@googlemail.com

 hello acerezo,

 i do not think that i really solved the issue. nevertheless i coded
 around it a bit and now i can run server side AND client side code
 test cases without any problems. feel free to browse through the
 honeycrm sourcecode to see how i did it:

 http://code.google.com/p/honeycrm/source/browse/#svn/trunk/src/honeycrm/client/test

 important to note is the following: since the service (communication
 from client to server side) could not be constructed using
 gwt.create() when the client side tests are running, i decided to
 replace the service before running the tests: see

 http://code.google.com/p/honeycrm/source/browse/trunk/src/honeycrm/client/test/AbstractClientTest.java
 and
 http://code.google.com/p/honeycrm/source/browse/trunk/src/honeycrm/client/ServiceRegistry.java

 the result is not really satisfying since i cannot run the ui code
 test cases and use the correct service (that will be used in
 production mode). however, i can at least test all the other stuff and
 i can test the ui code with a dummy service if i want to. of course, i
 still want to have a real solution (instead of this dirty workaround)
 allowing me to test the client code properly. but since i found no
 solution yet and the google guys did not help me out either i had to
 go on with this workaround until some gwt guru comes and fixes my
 issue.

 by the way: i am looking for developers who are interested in
 participating in the honeycrm project. we welcome everyone who wants
 to contribute and give feedback to the project!

 kind regards,
 ingo

 2010/6/28 Acerezo acerezoguil...@gmail.com:
  Hello I've the same problem Did you find the solution?
 
  Thanks.
 
  On Jun 7, 10:13 am, ingo ingo.jaec...@googlemail.com wrote:
  hello google,
 
  believe it or not but this seems to be a problem as huherto wrote on
  the mailing list in earlier this year. unfortunately, he did not
  receive an answer either:
 
 
  http://groups.google.com/group/google-web-toolkit/browse_thread/threa...
 
  would appreciate a quick response to this issue.
 
  kind regards,
  ingo
 
  On 3 Jun., 11:42, ingo ingo.jaec...@googlemail.com wrote:
 
   as a workaround i removed the jdoconfig.xml file from the
   src/WEB-INF
   directory and from the war/WEB-INF/classes/META-INF directory. then
   i
   instantiated the persistence manager factory by using a map like the
   following:
 
                   final MapString, String map = new HashMapString,
   String();
                   map.put(javax.jdo.PersistenceManagerFactoryClass,
  
   org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory);
                   map.put(javax.jdo.option.ConnectionURL,
   appengine);
                   map.put(javax.jdo.option.NontransactionalRead,
   true);
                   map.put(javax.jdo.option.NontransactionalWrite,
   true);
                   map.put(javax.jdo.option.RetainValues, true);
  
   map.put(datanucleus.appengine.autoCreateDatastoreTxns, true);
 
                  pmf= JDOHelper.getPersistenceManagerFactory(map);
 
   this somehow lets the test run successfully but throws the following
   exception nevertheless:
 
   [WARN] StandardContext[]Exception while dispatching incoming RPC
   call
   com.google.gwt.user.server.rpc.UnexpectedException: Service method
   'public abstract crm.client.dto.AbstractDto
   crm.client.CommonService.get(int,long)' threw an unexpected
   exception:
   java.lang.NullPointerException:NoAPIenvironmentisregisteredfor
   thisthread.
           at
  
   com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:
   378)
           at
   com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
   581)
           at
  
   com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
   188)
           at
  
   com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
   224)
           at
  
   com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
   62)
           at
   javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
           at
   javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
           at
  
   com.google.gwt.dev.shell.GWTShellServlet.service(GWTShellServlet.java:
   288)
           at
   javax.servlet.http.HttpServlet.service(HttpServlet.java:806