Wiki source code of Your First Framework

Last modified by Steve Peery on 2012/08/09 05:08

Show last authors
1 {{toc/}}
2
3 = Introduction =
4
5 Now that we have a working REST project, let's create a framework. A framework in a Project Wonder context is a special folder that contains Java libraries (.jar), other resources (EOModels, images, CSS, etc.) and a Info.plist file. If you are a Cocoa developer, a Project Wonder framework structure have a similar structure as a Cocoa framework.
6
7 When a framework is built (with Ant or Maven), the structure is like this:
8
9 MyStuff.framework
10 ~-~-> Resources
11 ~-~-~-~-> Info.plist
12 ~-~-~-~-> Java
13 ~-~-~-~-~-~-> mystuff.jar
14 ~-~-~-~-~-~-> some-third-party.jar
15 ~-~-~-~-> MyEOModel.eomodeld
16 ~-~-~-~-> Properties
17 ~-~-> WebServerResources
18 ~-~-~-~-> someimage.png
19 ~-~-~-~-> somestyling.css
20
21 So why using frameworks? Simple: to be able to use them in more than one project. Putting your EOModel into a framework is a good idea since you can built many different projects for the same business logic.
22
23 = Creating the framework =
24
25 So let's make a new framework. In Eclipse, open the **File** menu, select **New** and select **Wonder Framework**. Name it **BlogCommon** and click **Finish**.
26
27 Now you have another project in your Eclipse workspace. Open it and you will see that the folder structure is the same as for an Wonder application. A framework and an application in Eclipse is almost the same, the difference is the nature of the project and when the project is built, the product will be a bit different.
28
29 The next step is to copy the EOModel and its related Java code to the framework. Open the **BlogRest** project, open its **Resources** folder, and select **BlogModel.eogen** and **BlogModel.eomodel**. Right-click on one of the two files and select **Refactor** -> **Move**.
30
31 You will see the list of all opened projects in your Eclipse workspace, and we want to copy the two files into the **BlogCommon** project. Select the **Resources** folder of the **BlogCommon** project and click **OK**.
32
33 We need to do similar steps for the Java code. Open the **Sources** folder of the **BlogRest** project. Select the **your.app.model** and **your.app.model.migrations** packages, right-click on one of the packages, and select **Refactor** -> **Move**. For the destination, select the **Sources** folder, and click **OK**.
34
35 = Linking the application with the framework =
36
37 If you go back to the **BlogRest** project, you will see compilation errors. We need to link the application project with the framework project. To do so, right-click on the **BlogRest** project, and select **Build Path** -> **Configure Build Path**.
38
39 Click the **Libraries** tab, and you will see the list of Java archives (.jar) and Project Wonder frameworks.
40
41 To add **BlogCommon** to the build path (aka the class path), click on **Add Library**.
42
43 Select **WebObjects Frameworks** and click **Next**.
44
45 You will see a list of all frameworks that you can add to your project. Check **BlogCommon** in the list and click **Finish**. Click **OK** in the **Properties** window to go back to the main Eclipse window.
46
47 You can see that all compilation errors are now gone. The next thing we need to do is to link the H2PlugIn with the **BlogCommon** framework. Why? Because since we moved the database model to the framework, the framework needs the JDBC plugin included in the H2PlugIn in its build path. To do so, right-click on the **BlogCommon** project, and select **Build Path** -> **Configure Build Path**.
48
49 Click the **Libraries** tab, and you will see the list of Java archives (.jar) and Project Wonder frameworks. Click on **Add Library**, select **WebObjects Frameworks** and click **Next**. Select **H2PlugIn**, click on **Add Library**. Close the **Properties** window to go back to the main Eclipse window.
50
51 You can run the **BlogRest** application and everything will work. By moving the EOModel to the framework, you will be able to use the model in the next tutorial: [[building a DirectToWeb application to manage the blog>>doc:WEB.Home.Getting Started.Your First D2W Project.WebHome]].