Re: Using Wicket to build Application Portal
Hi Igor, I have started work on the pattern you suggested. This is what I have done so far but there seems to be some missing pieces when I integrate the tabs or try to fire them from container app, would be great to get some lead here. The Structure of the projects as follows. * Project: test-common Description: Will provide common interfaces that sub applications can use. One of them would be the CreateAppTab interface. *Interface to create a new tab, goes like this. * public ITab createAppTab();* Using maven POM I have marked it to be built into a *.jar* file.The built jar is available in the local maven repository so other applications can refer to it. *Project: test-container Description: Will be the base application that will contain sub-applications.* This has the WebApplication and also a Sub-classed Web Application. As Part of its POM, I have added *test-common* as a dependency. I build this project as a .*WAR *file. As part of its *WEB-INF/lib*, I find the* test-common.jar* At this point it satisfies the requirements of a Container Application that contains the module(jar) as part of it.( Please correct me if I have deviated) *Project:test-application-1* *Description: Will be one of the applications. Provides Tab(s) that will be associated with this app.* *Project will be built as a .jar* I do not have a Web Application as part of this project. I include a dependency to* test-common.jar* in test-application-1's POM. (Since I thought adding dependency to test-container.war did not seem sensible, correct me if I am wrong.) One of the panel class in this application implements the test-common's createAppTab interface and add's the returned ITab instance into a List. The ListITab is added into an instance of TabbedPanel. The instance of TabbedPanel is added into the Panel. I have a corresponding basic markup for this Panel class. *Re-Visit test-container* I modified the test-container's POM to include test-application-1 as a dependency(jar) and built it into a .WAR. The war now contains two jars *test-common.jar and **test-application-1.jar Is this build strategy acceptable? In one build, able to include the dependent application's jar's into one single WAR. Doubts:* 1. I need to know how these individual applications/plugins will be fired to render the tabs (create an instance of the tabs) from the test-container. when the application is started on lands on the Home Page for instance? [On a side note what I did try on those lines was I created an instance of the sub-application's class that implemented the Tab Interface and added it to the home page instance. As in.. App1Tab tab1 = new App1Tab(someTab); //This would fire the constructor and create the tab instances add(tab1); This was not a success, as it comes up with a Wicket runtime exception ITab.getPanel() returned a panel with invalid id [studyPanel]. You must always return a panel with id equal to the provided panelId parameter. TabbedPanel [8:stab:moduleTabsList] ITab index [0] ] Thanks for the time, will be great to hear from you on this. Regards Niv On Thu, Jun 10, 2010 at 11:46 AM, Igor Vaynberg igor.vaynb...@gmail.comwrote: On Wed, Jun 9, 2010 at 8:20 PM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, Thank you for the quick response and what a ray of hope it brings! It certainly, from your experience seems to be a very good design approach. I am excited to implement it. The question(s)/confirmation at this point in time is : 1.Will Application 2..(n) ever extend the sub-class Web Application provided by the Container Application? [I guess not, since Application-2 needs to be built as a jar and packaged with Container-Application's WAR. Which means sub application's (jars) will all be part of a Single Wicket Application instance] (Am I right?) correct, since 2..n are plugins rather then applications they do not need their own application class. 2. The Tab Provider Interface you mentioned that would be part of the common jar in Container-Application; would that be a class like org.apache.wicket.extensions.markup.html.tabs.AbstractTab ? This is what I have used at the moment. sure, that will work. usually i have something like this public interface MainTabProvider { ITab newMainTab(); } followed by public interface ApplicationPlugin extends TabProvider, .. bunch of other interfaces -igor Appreciate your time. Glad to be using the right framework and not have to switch to another framework. Many thanks Regards On Wed, Jun 9, 2010 at 10:44 PM, Igor Vaynberg igor.vaynb...@gmail.com wrote: ive done this many times already, wicket is perfect for things like these. application 1 should be a simple wicket container app. this is a full application with its own subclass of WicketApplication and is what is going to be packaged as a war file. it should also have a module (jar) with the interfaces for the common
Re: Using Wicket to build Application Portal
Hi Igor, I have moved a bit forward since the last email but would like your thoughts on it. I am now able to render the top level tab from t*est-application-1*and test-application-2. This is after I resolved the Wicket Runtime Exception. Now going forward, this is how I fire the classes that provide the application tabs from the container application On the HomePage of the Container Application (for example) I instantiate the sub-application's tabs. StudyTab appStudy = new StudyTab(App1Tab); add(appStudy); SubjectTab appParticipants = new SubjectTab(App2Tab); add(appParticipants); The homepage.html contains a reference to the components App1Tab and App2Tab div wicket:id=App1Tab/div div wicket:id=App2Tab/div So I can see that each sub-application is contributing to the top level (container) menu's. Thus abstracting the details to each sub application. I am yet to render the sub-menus for each application but I guess that is easy since its within the context of each sub application. 1. I would like to get some confirmation if I am on the right path and is this how I should fire the sub-application's entry level tabs? 2. Is there a better way ? 3. Would like to post another question related to application context as part of sub-applications? How would application 1..n have reference to the application context? I guess will try to work it from my side in the meantime. Please let me know on #1 and #2 and if I have not deviated. Many thanks Regards Niv On Thu, Jun 17, 2010 at 4:21 PM, Nivedan Nadaraj shravann...@gmail.comwrote: Hi Igor, I have started work on the pattern you suggested. This is what I have done so far but there seems to be some missing pieces when I integrate the tabs or try to fire them from container app, would be great to get some lead here. The Structure of the projects as follows. * Project: test-common Description: Will provide common interfaces that sub applications can use. One of them would be the CreateAppTab interface. *Interface to create a new tab, goes like this. * public ITab createAppTab();* Using maven POM I have marked it to be built into a *.jar* file.The built jar is available in the local maven repository so other applications can refer to it. *Project: test-container Description: Will be the base application that will contain sub-applications.* This has the WebApplication and also a Sub-classed Web Application. As Part of its POM, I have added *test-common* as a dependency. I build this project as a .*WAR *file. As part of its *WEB-INF/lib*, I find the* test-common.jar* At this point it satisfies the requirements of a Container Application that contains the module(jar) as part of it.( Please correct me if I have deviated) *Project:test-application-1* *Description: Will be one of the applications. Provides Tab(s) that will be associated with this app.* *Project will be built as a .jar* I do not have a Web Application as part of this project. I include a dependency to* test-common.jar* in test-application-1's POM. (Since I thought adding dependency to test-container.war did not seem sensible, correct me if I am wrong.) One of the panel class in this application implements the test-common's createAppTab interface and add's the returned ITab instance into a List. The ListITab is added into an instance of TabbedPanel. The instance of TabbedPanel is added into the Panel. I have a corresponding basic markup for this Panel class. *Re-Visit test-container* I modified the test-container's POM to include test-application-1 as a dependency(jar) and built it into a .WAR. The war now contains two jars *test-common.jar and **test-application-1.jar Is this build strategy acceptable? In one build, able to include the dependent application's jar's into one single WAR. Doubts:* 1. I need to know how these individual applications/plugins will be fired to render the tabs (create an instance of the tabs) from the test-container. when the application is started on lands on the Home Page for instance? [On a side note what I did try on those lines was I created an instance of the sub-application's class that implemented the Tab Interface and added it to the home page instance. As in.. App1Tab tab1 = new App1Tab(someTab); //This would fire the constructor and create the tab instances add(tab1); This was not a success, as it comes up with a Wicket runtime exception ITab.getPanel() returned a panel with invalid id [studyPanel]. You must always return a panel with id equal to the provided panelId parameter. TabbedPanel [8:stab:moduleTabsList] ITab index [0] ] Thanks for the time, will be great to hear from you on this. Regards Niv On Thu, Jun 10, 2010 at 11:46 AM, Igor Vaynberg igor.vaynb...@gmail.comwrote: On Wed, Jun 9, 2010 at 8:20 PM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, Thank you for the quick response and what a ray of hope it brings! It certainly,
Re: Using Wicket to build Application Portal
On Thu, Jun 17, 2010 at 3:14 AM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, I have moved a bit forward since the last email but would like your thoughts on it. I am now able to render the top level tab from t*est-application-1*and test-application-2. This is after I resolved the Wicket Runtime Exception. Now going forward, this is how I fire the classes that provide the application tabs from the container application On the HomePage of the Container Application (for example) I instantiate the sub-application's tabs. StudyTab appStudy = new StudyTab(App1Tab); add(appStudy); SubjectTab appParticipants = new SubjectTab(App2Tab); add(appParticipants); The homepage.html contains a reference to the components App1Tab and App2Tab div wicket:id=App1Tab/div div wicket:id=App2Tab/div So I can see that each sub-application is contributing to the top level (container) menu's. Thus abstracting the details to each sub application. I am yet to render the sub-menus for each application but I guess that is easy since its within the context of each sub application. 1. I would like to get some confirmation if I am on the right path and is this how I should fire the sub-application's entry level tabs? you are on the right track. 2. Is there a better way ? you are doing the discovery of sub-applications manually - eg hardcoding it into the container project, it would be nicer if they were automatically discovered at runtime. you can use whatever discovery mechanism you want, for example you can use java's service provider http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service Provider 3. Would like to post another question related to application context as part of sub-applications? How would application 1..n have reference to the application context? I guess will try to work it from my side in the meantime. what is the application context? the instance of application? it can be pulled out from any wicket thread using Application.get() -igor Please let me know on #1 and #2 and if I have not deviated. Many thanks Regards Niv On Thu, Jun 17, 2010 at 4:21 PM, Nivedan Nadaraj shravann...@gmail.comwrote: Hi Igor, I have started work on the pattern you suggested. This is what I have done so far but there seems to be some missing pieces when I integrate the tabs or try to fire them from container app, would be great to get some lead here. The Structure of the projects as follows. * Project: test-common Description: Will provide common interfaces that sub applications can use. One of them would be the CreateAppTab interface. *Interface to create a new tab, goes like this. * public ITab createAppTab();* Using maven POM I have marked it to be built into a *.jar* file.The built jar is available in the local maven repository so other applications can refer to it. *Project: test-container Description: Will be the base application that will contain sub-applications.* This has the WebApplication and also a Sub-classed Web Application. As Part of its POM, I have added *test-common* as a dependency. I build this project as a .*WAR *file. As part of its *WEB-INF/lib*, I find the* test-common.jar* At this point it satisfies the requirements of a Container Application that contains the module(jar) as part of it.( Please correct me if I have deviated) *Project:test-application-1* *Description: Will be one of the applications. Provides Tab(s) that will be associated with this app.* *Project will be built as a .jar* I do not have a Web Application as part of this project. I include a dependency to* test-common.jar* in test-application-1's POM. (Since I thought adding dependency to test-container.war did not seem sensible, correct me if I am wrong.) One of the panel class in this application implements the test-common's createAppTab interface and add's the returned ITab instance into a List. The ListITab is added into an instance of TabbedPanel. The instance of TabbedPanel is added into the Panel. I have a corresponding basic markup for this Panel class. *Re-Visit test-container* I modified the test-container's POM to include test-application-1 as a dependency(jar) and built it into a .WAR. The war now contains two jars *test-common.jar and **test-application-1.jar Is this build strategy acceptable? In one build, able to include the dependent application's jar's into one single WAR. Doubts:* 1. I need to know how these individual applications/plugins will be fired to render the tabs (create an instance of the tabs) from the test-container. when the application is started on lands on the Home Page for instance? [On a side note what I did try on those lines was I created an instance of the sub-application's class that implemented the Tab Interface and added it to the home page instance. As in.. App1Tab tab1 = new App1Tab(someTab); //This would fire the constructor and create the tab instances add(tab1);
Re: Using Wicket to build Application Portal
Hi Igor Thank you for that. Discovery of sub-applications using the 'provider-lookup' mechanism sounds pretty cool. I will investigate that concept and work on it, The # 3. :I I guess If I work on it things will get clearer and if something is not would bounce it off you. Many thanks for the valuable guidance. Regards Niv On Fri, Jun 18, 2010 at 4:32 AM, Igor Vaynberg igor.vaynb...@gmail.comwrote: On Thu, Jun 17, 2010 at 3:14 AM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, I have moved a bit forward since the last email but would like your thoughts on it. I am now able to render the top level tab from t*est-application-1*and test-application-2. This is after I resolved the Wicket Runtime Exception. Now going forward, this is how I fire the classes that provide the application tabs from the container application On the HomePage of the Container Application (for example) I instantiate the sub-application's tabs. StudyTab appStudy = new StudyTab(App1Tab); add(appStudy); SubjectTab appParticipants = new SubjectTab(App2Tab); add(appParticipants); The homepage.html contains a reference to the components App1Tab and App2Tab div wicket:id=App1Tab/div div wicket:id=App2Tab/div So I can see that each sub-application is contributing to the top level (container) menu's. Thus abstracting the details to each sub application. I am yet to render the sub-menus for each application but I guess that is easy since its within the context of each sub application. 1. I would like to get some confirmation if I am on the right path and is this how I should fire the sub-application's entry level tabs? you are on the right track. 2. Is there a better way ? you are doing the discovery of sub-applications manually - eg hardcoding it into the container project, it would be nicer if they were automatically discovered at runtime. you can use whatever discovery mechanism you want, for example you can use java's service provider http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service Provider 3. Would like to post another question related to application context as part of sub-applications? How would application 1..n have reference to the application context? I guess will try to work it from my side in the meantime. what is the application context? the instance of application? it can be pulled out from any wicket thread using Application.get() -igor Please let me know on #1 and #2 and if I have not deviated. Many thanks Regards Niv On Thu, Jun 17, 2010 at 4:21 PM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, I have started work on the pattern you suggested. This is what I have done so far but there seems to be some missing pieces when I integrate the tabs or try to fire them from container app, would be great to get some lead here. The Structure of the projects as follows. * Project: test-common Description: Will provide common interfaces that sub applications can use. One of them would be the CreateAppTab interface. *Interface to create a new tab, goes like this. * public ITab createAppTab();* Using maven POM I have marked it to be built into a *.jar* file.The built jar is available in the local maven repository so other applications can refer to it. *Project: test-container Description: Will be the base application that will contain sub-applications.* This has the WebApplication and also a Sub-classed Web Application. As Part of its POM, I have added *test-common* as a dependency. I build this project as a .*WAR *file. As part of its *WEB-INF/lib*, I find the* test-common.jar* At this point it satisfies the requirements of a Container Application that contains the module(jar) as part of it.( Please correct me if I have deviated) *Project:test-application-1* *Description: Will be one of the applications. Provides Tab(s) that will be associated with this app.* *Project will be built as a .jar* I do not have a Web Application as part of this project. I include a dependency to* test-common.jar* in test-application-1's POM. (Since I thought adding dependency to test-container.war did not seem sensible, correct me if I am wrong.) One of the panel class in this application implements the test-common's createAppTab interface and add's the returned ITab instance into a List. The ListITab is added into an instance of TabbedPanel. The instance of TabbedPanel is added into the Panel. I have a corresponding basic markup for this Panel class. *Re-Visit test-container* I modified the test-container's POM to include test-application-1 as a dependency(jar) and built it into a .WAR. The war now contains two jars *test-common.jar and **test-application-1.jar Is this build strategy acceptable? In one build, able to include the dependent application's jar's into one single WAR.
Re: Using Wicket to build Application Portal
Hi Igor, I went through the provider-lookup mechanism and as I study the current project structure it seems to relate to the concept of Extension Mechansim.( http://java.sun.com/docs/books/tutorial/ext/basics/install.html) Am I correct? 1. the *t*est-common.jar that provides the interface to build the tabs acts as the Service.* 2. *the test-application-1.jar providing the actual implementation of the Service will be the Service Provider.* 3.* Since test-application-1.jar is within the application classpath of test-container application*, if* I added a file modified/added an entry into * *META-INF/services/org.commons.MainTabProvider 4. And add a line into this file pointing to the provider org.testapp1.provider.MainTabProvider # Provider Implementation for MainTabProvider interface 5. With # 3 and #4 implemented, can the test-container application can now reference the provider implementation to get to the tabs? So it does not directly hardcode the classes to get the tab items but gets it via the provider. Questions: 1. What *extension* or type of file would META-INF/services/org.commons.MainTabProvider be? 2. When I built sub-application using Maven I do not see the *services*folder as part of META-INF by default. How can I get that as part of the maven build? 3. Once available as part of the services directory under META-INF, how will the container application gain access to the *implementation*? Can I just say MainTabProvider.*createAppTab()? It has to somehow return the instance of the provider so wondering if there must be a lookup ? Will be great to hear from you on this, In the meantime will do my research and hope to get there Thanks Niv * * * On Fri, Jun 18, 2010 at 10:16 AM, Nivedan Nadaraj shravann...@gmail.comwrote: Hi Igor Thank you for that. Discovery of sub-applications using the 'provider-lookup' mechanism sounds pretty cool. I will investigate that concept and work on it, The # 3. :I I guess If I work on it things will get clearer and if something is not would bounce it off you. Many thanks for the valuable guidance. Regards Niv On Fri, Jun 18, 2010 at 4:32 AM, Igor Vaynberg igor.vaynb...@gmail.comwrote: On Thu, Jun 17, 2010 at 3:14 AM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, I have moved a bit forward since the last email but would like your thoughts on it. I am now able to render the top level tab from t*est-application-1*and test-application-2. This is after I resolved the Wicket Runtime Exception. Now going forward, this is how I fire the classes that provide the application tabs from the container application On the HomePage of the Container Application (for example) I instantiate the sub-application's tabs. StudyTab appStudy = new StudyTab(App1Tab); add(appStudy); SubjectTab appParticipants = new SubjectTab(App2Tab); add(appParticipants); The homepage.html contains a reference to the components App1Tab and App2Tab div wicket:id=App1Tab/div div wicket:id=App2Tab/div So I can see that each sub-application is contributing to the top level (container) menu's. Thus abstracting the details to each sub application. I am yet to render the sub-menus for each application but I guess that is easy since its within the context of each sub application. 1. I would like to get some confirmation if I am on the right path and is this how I should fire the sub-application's entry level tabs? you are on the right track. 2. Is there a better way ? you are doing the discovery of sub-applications manually - eg hardcoding it into the container project, it would be nicer if they were automatically discovered at runtime. you can use whatever discovery mechanism you want, for example you can use java's service provider http://java.sun.com/j2se/1.4.2/docs/guide/jar/jar.html#Service Provider 3. Would like to post another question related to application context as part of sub-applications? How would application 1..n have reference to the application context? I guess will try to work it from my side in the meantime. what is the application context? the instance of application? it can be pulled out from any wicket thread using Application.get() -igor Please let me know on #1 and #2 and if I have not deviated. Many thanks Regards Niv On Thu, Jun 17, 2010 at 4:21 PM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, I have started work on the pattern you suggested. This is what I have done so far but there seems to be some missing pieces when I integrate the tabs or try to fire them from container app, would be great to get some lead here. The Structure of the projects as follows. * Project: test-common Description: Will provide common interfaces that sub applications can use. One of them would be the CreateAppTab interface. *Interface to create a new tab, goes like this. * public ITab
Re: Using Wicket to build Application Portal
Hi All, I will try to articulate my requirement. Can I call it a Wicket based Portal? I have an application lets call it Application-1 that provides common functionality such as Authentication/Authorization. It also will provide the Business layer/Service methods. As part of this web application, it builds the the TOP level tab menus. Each of the tab menu will represent a related business application. There is one single entry point to the whole application suite. Now, I want to build one of the related business application(Application-2) using Wicket, Hibernate etc and inherit the common functionality provided by Application-1. However, I want to provide/or add to the Tab menu provided by Application-1 and integrate with it. As part of Application-1, I want to be able to provide Tab1. And as part of Appication-2, I want to be able to provide Tab2. So when I eventually build the whole application suite, I must be able to enable/disable a particular application tab or access to an application through some business rules (License) etc. Also it should give me the flexibility to maintain each module/application independently and allow me to deploy a particular module for a client. It is pretty critical that I have a good solution that gives a reasonable amount of flexibility. I am sure you must have come across such requirements, more like a portal. Only, I have to build it using Wicket. Just so you are aware this is the set up for the project. Web Tier: Wicket with Wiquery Security: Apache Shiro Service Tier: Spring Model/Persistence: Hibernate/Spring LDAP Servlet Engine: Tomcat Would be great to hear some pattern I can follow and references if any that can serve as a start-up. Any thoughts/experience from your end would be great and valuable. Some doubts that lurks in my mind. 1. Does Application-2 need to have a Wicket Application .i.e need to extend a Wicket Application? Makes sense if I want to deploy it as a stand-alone one.But If i want to integrate and use the set up as part of Application-1, should I build the project without a Wicket Applications? 2. How does Application- 2 render the Tabs and integrate with Application-1 that does not know/aware of its child projects? 3. As an alternative, I can build application-2 as part of application-1. The downside is, when a client wants only few modules, I would need to build and package the whole suite.This is my last resort but sure your thoughts will make a difference. Appreciate your thoughts and time, Many thanks Nivedan
Re: Using Wicket to build Application Portal
ive done this many times already, wicket is perfect for things like these. application 1 should be a simple wicket container app. this is a full application with its own subclass of WicketApplication and is what is going to be packaged as a war file. it should also have a module (jar) with the interfaces for the common services it provides and a way to retrieve those interfaces. application 2 should be a jar file which contains all the necessary wicket artifacts such as pages. one of the things in it should be something that implements a tabprovider interface defined in application 1's common jar. the tabprovider would return a tab that contains a panel from application 2, this panel would act as the entry point into the application. the only other question is now packaging and deployment. the easiest way is to take the jar from application 2 and package it into application 1 as part of the war file. a trickier way to do it is to have a classloader that can look in some external folder and load from all the jars there, this external folder would contain the jars for application 2...n. -igor On Wed, Jun 9, 2010 at 7:11 AM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi All, I will try to articulate my requirement. Can I call it a Wicket based Portal? I have an application lets call it Application-1 that provides common functionality such as Authentication/Authorization. It also will provide the Business layer/Service methods. As part of this web application, it builds the the TOP level tab menus. Each of the tab menu will represent a related business application. There is one single entry point to the whole application suite. Now, I want to build one of the related business application(Application-2) using Wicket, Hibernate etc and inherit the common functionality provided by Application-1. However, I want to provide/or add to the Tab menu provided by Application-1 and integrate with it. As part of Application-1, I want to be able to provide Tab1. And as part of Appication-2, I want to be able to provide Tab2. So when I eventually build the whole application suite, I must be able to enable/disable a particular application tab or access to an application through some business rules (License) etc. Also it should give me the flexibility to maintain each module/application independently and allow me to deploy a particular module for a client. It is pretty critical that I have a good solution that gives a reasonable amount of flexibility. I am sure you must have come across such requirements, more like a portal. Only, I have to build it using Wicket. Just so you are aware this is the set up for the project. Web Tier: Wicket with Wiquery Security: Apache Shiro Service Tier: Spring Model/Persistence: Hibernate/Spring LDAP Servlet Engine: Tomcat Would be great to hear some pattern I can follow and references if any that can serve as a start-up. Any thoughts/experience from your end would be great and valuable. Some doubts that lurks in my mind. 1. Does Application-2 need to have a Wicket Application .i.e need to extend a Wicket Application? Makes sense if I want to deploy it as a stand-alone one.But If i want to integrate and use the set up as part of Application-1, should I build the project without a Wicket Applications? 2. How does Application- 2 render the Tabs and integrate with Application-1 that does not know/aware of its child projects? 3. As an alternative, I can build application-2 as part of application-1. The downside is, when a client wants only few modules, I would need to build and package the whole suite.This is my last resort but sure your thoughts will make a difference. Appreciate your thoughts and time, Many thanks Nivedan - To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org
Re: Using Wicket to build Application Portal
Hi Igor, Thank you for the quick response and what a ray of hope it brings! It certainly, from your experience seems to be a very good design approach. I am excited to implement it. The question(s)/confirmation at this point in time is : 1.Will Application 2..(n) ever extend the sub-class Web Application provided by the Container Application? [I guess not, since Application-2 needs to be built as a jar and packaged with Container-Application's WAR. Which means sub application's (jars) will all be part of a Single Wicket Application instance] (Am I right?) 2. The Tab Provider Interface you mentioned that would be part of the common jar in Container-Application; would that be a class like org.apache.wicket.extensions.markup.html.tabs.AbstractTab ? This is what I have used at the moment. Appreciate your time. Glad to be using the right framework and not have to switch to another framework. Many thanks Regards On Wed, Jun 9, 2010 at 10:44 PM, Igor Vaynberg igor.vaynb...@gmail.comwrote: ive done this many times already, wicket is perfect for things like these. application 1 should be a simple wicket container app. this is a full application with its own subclass of WicketApplication and is what is going to be packaged as a war file. it should also have a module (jar) with the interfaces for the common services it provides and a way to retrieve those interfaces. application 2 should be a jar file which contains all the necessary wicket artifacts such as pages. one of the things in it should be something that implements a tabprovider interface defined in application 1's common jar. the tabprovider would return a tab that contains a panel from application 2, this panel would act as the entry point into the application. the only other question is now packaging and deployment. the easiest way is to take the jar from application 2 and package it into application 1 as part of the war file. a trickier way to do it is to have a classloader that can look in some external folder and load from all the jars there, this external folder would contain the jars for application 2...n. -igor On Wed, Jun 9, 2010 at 7:11 AM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi All, I will try to articulate my requirement. Can I call it a Wicket based Portal? I have an application lets call it Application-1 that provides common functionality such as Authentication/Authorization. It also will provide the Business layer/Service methods. As part of this web application, it builds the the TOP level tab menus. Each of the tab menu will represent a related business application. There is one single entry point to the whole application suite. Now, I want to build one of the related business application(Application-2) using Wicket, Hibernate etc and inherit the common functionality provided by Application-1. However, I want to provide/or add to the Tab menu provided by Application-1 and integrate with it. As part of Application-1, I want to be able to provide Tab1. And as part of Appication-2, I want to be able to provide Tab2. So when I eventually build the whole application suite, I must be able to enable/disable a particular application tab or access to an application through some business rules (License) etc. Also it should give me the flexibility to maintain each module/application independently and allow me to deploy a particular module for a client. It is pretty critical that I have a good solution that gives a reasonable amount of flexibility. I am sure you must have come across such requirements, more like a portal. Only, I have to build it using Wicket. Just so you are aware this is the set up for the project. Web Tier: Wicket with Wiquery Security: Apache Shiro Service Tier: Spring Model/Persistence: Hibernate/Spring LDAP Servlet Engine: Tomcat Would be great to hear some pattern I can follow and references if any that can serve as a start-up. Any thoughts/experience from your end would be great and valuable. Some doubts that lurks in my mind. 1. Does Application-2 need to have a Wicket Application .i.e need to extend a Wicket Application? Makes sense if I want to deploy it as a stand-alone one.But If i want to integrate and use the set up as part of Application-1, should I build the project without a Wicket Applications? 2. How does Application- 2 render the Tabs and integrate with Application-1 that does not know/aware of its child projects? 3. As an alternative, I can build application-2 as part of application-1. The downside is, when a client wants only few modules, I would need to build and package the whole suite.This is my last resort but sure your thoughts will make a difference. Appreciate your thoughts and time, Many thanks Nivedan - To unsubscribe, e-mail:
Re: Using Wicket to build Application Portal
On Wed, Jun 9, 2010 at 8:20 PM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi Igor, Thank you for the quick response and what a ray of hope it brings! It certainly, from your experience seems to be a very good design approach. I am excited to implement it. The question(s)/confirmation at this point in time is : 1.Will Application 2..(n) ever extend the sub-class Web Application provided by the Container Application? [I guess not, since Application-2 needs to be built as a jar and packaged with Container-Application's WAR. Which means sub application's (jars) will all be part of a Single Wicket Application instance] (Am I right?) correct, since 2..n are plugins rather then applications they do not need their own application class. 2. The Tab Provider Interface you mentioned that would be part of the common jar in Container-Application; would that be a class like org.apache.wicket.extensions.markup.html.tabs.AbstractTab ? This is what I have used at the moment. sure, that will work. usually i have something like this public interface MainTabProvider { ITab newMainTab(); } followed by public interface ApplicationPlugin extends TabProvider, .. bunch of other interfaces -igor Appreciate your time. Glad to be using the right framework and not have to switch to another framework. Many thanks Regards On Wed, Jun 9, 2010 at 10:44 PM, Igor Vaynberg igor.vaynb...@gmail.comwrote: ive done this many times already, wicket is perfect for things like these. application 1 should be a simple wicket container app. this is a full application with its own subclass of WicketApplication and is what is going to be packaged as a war file. it should also have a module (jar) with the interfaces for the common services it provides and a way to retrieve those interfaces. application 2 should be a jar file which contains all the necessary wicket artifacts such as pages. one of the things in it should be something that implements a tabprovider interface defined in application 1's common jar. the tabprovider would return a tab that contains a panel from application 2, this panel would act as the entry point into the application. the only other question is now packaging and deployment. the easiest way is to take the jar from application 2 and package it into application 1 as part of the war file. a trickier way to do it is to have a classloader that can look in some external folder and load from all the jars there, this external folder would contain the jars for application 2...n. -igor On Wed, Jun 9, 2010 at 7:11 AM, Nivedan Nadaraj shravann...@gmail.com wrote: Hi All, I will try to articulate my requirement. Can I call it a Wicket based Portal? I have an application lets call it Application-1 that provides common functionality such as Authentication/Authorization. It also will provide the Business layer/Service methods. As part of this web application, it builds the the TOP level tab menus. Each of the tab menu will represent a related business application. There is one single entry point to the whole application suite. Now, I want to build one of the related business application(Application-2) using Wicket, Hibernate etc and inherit the common functionality provided by Application-1. However, I want to provide/or add to the Tab menu provided by Application-1 and integrate with it. As part of Application-1, I want to be able to provide Tab1. And as part of Appication-2, I want to be able to provide Tab2. So when I eventually build the whole application suite, I must be able to enable/disable a particular application tab or access to an application through some business rules (License) etc. Also it should give me the flexibility to maintain each module/application independently and allow me to deploy a particular module for a client. It is pretty critical that I have a good solution that gives a reasonable amount of flexibility. I am sure you must have come across such requirements, more like a portal. Only, I have to build it using Wicket. Just so you are aware this is the set up for the project. Web Tier: Wicket with Wiquery Security: Apache Shiro Service Tier: Spring Model/Persistence: Hibernate/Spring LDAP Servlet Engine: Tomcat Would be great to hear some pattern I can follow and references if any that can serve as a start-up. Any thoughts/experience from your end would be great and valuable. Some doubts that lurks in my mind. 1. Does Application-2 need to have a Wicket Application .i.e need to extend a Wicket Application? Makes sense if I want to deploy it as a stand-alone one.But If i want to integrate and use the set up as part of Application-1, should I build the project without a Wicket Applications? 2. How does Application- 2 render the Tabs and integrate with Application-1 that does not know/aware of its child projects? 3. As an alternative, I