New version of Getting Started with Cayenne guide. Tutorial now based on IDEA instead of Eclipse. Second iteration
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/2c2516c9 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/2c2516c9 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/2c2516c9 Branch: refs/heads/master Commit: 2c2516c93252dbd59366842e9d548c924daf3361 Parents: 55e585e Author: stariy <stari...@gmail.com> Authored: Tue Dec 6 22:19:39 2016 +0300 Committer: stariy <stari...@gmail.com> Committed: Tue Dec 6 22:19:39 2016 +0300 ---------------------------------------------------------------------- .../resources/stylesheets/html-no-parts.xsl | 2 +- .../getting-started/src/docbkx/java-classes.xml | 10 ++-- .../src/docbkx/object-context.xml | 8 +-- .../src/docbkx/object-relational-mapping.xml | 50 ++++++++++++------- .../src/docbkx/persistent-objects.xml | 22 ++++---- .../getting-started/src/docbkx/select-query.xml | 8 +-- .../src/docbkx/starting-project.xml | 30 +++++++---- .../getting-started/src/docbkx/webapp.xml | 20 ++++---- .../src/images/icon-attribute.gif | Bin 0 -> 1171 bytes .../getting-started/src/images/icon-datamap.gif | Bin 0 -> 755 bytes .../src/images/icon-dbentity.gif | Bin 0 -> 1171 bytes .../getting-started/src/images/icon-node.gif | Bin 0 -> 331 bytes .../src/images/icon-objentity.gif | Bin 0 -> 755 bytes .../getting-started/src/images/icon-sync.gif | Bin 0 -> 331 bytes 14 files changed, 87 insertions(+), 63 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html-no-parts.xsl ---------------------------------------------------------------------- diff --git a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html-no-parts.xsl b/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html-no-parts.xsl index 108b531..0659004 100644 --- a/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html-no-parts.xsl +++ b/docs/docbook/docbook-stylesheets/src/main/resources/stylesheets/html-no-parts.xsl @@ -21,5 +21,5 @@ version="1.0" xmlns:d="http://docbook.org/ns/docbook"> <xsl:include href="html.xsl"/> - <xsl:param name="generate.section.toc.level">2</xsl:param> + <!--xsl:param name="generate.section.toc.level">2</xsl:param--> </xsl:stylesheet> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/java-classes.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/java-classes.xml b/docs/docbook/getting-started/src/docbkx/java-classes.xml index 22c9a45..6d4bc37 100644 --- a/docs/docbook/getting-started/src/docbkx/java-classes.xml +++ b/docs/docbook/getting-started/src/docbkx/java-classes.xml @@ -20,7 +20,7 @@ <title>Creating Java Classes</title> <para>Here we'll generate the Java classes from the model that was created in the previous section. CayenneModeler can be used to also generate the database schema, but since we - specified "CreateIfNoSchemaStrategy" earlier when we created a DataNode, we'll skip the + specified "<code>CreateIfNoSchemaStrategy</code>" earlier when we created a DataNode, we'll skip the database schema step. Still be aware that you can do it if you need to via "Tools > Create Database Schema". </para> @@ -35,8 +35,8 @@ selected.</para> </listitem> <listitem> - <para>For the "Output Directory" select "src/main/java" folder under your Eclipse - project folder (this is a "peer" location to the cayenne-*.xml location we + <para>For the "Output Directory" select "<code>src/main/java</code>" folder under your IDEA + project folder (this is a "peer" location to the <code>cayenne-*.xml</code> location we selected before).</para> </listitem> <listitem> @@ -51,7 +51,7 @@ should see pairs of classes generated for each mapped entity. You probably also see that there's a bunch of red squiggles next to the newly generated Java classes in IDEA. This is because our project does not include Cayenne as a Maven dependency yet. Let's - fix it now by adding "cayenne-server" artifact in the bottom of the pom.xml file. The + fix it now by adding "cayenne-server" artifact in the bottom of the <code>pom.xml</code> file. The resulting POM should look like this:<programlisting language="xml"><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> @@ -81,7 +81,7 @@ and a subclass (e.g. Artist). You <emphasis role="bold">should not</emphasis> modify the superclasses whose names start with "_" (underscore), as they will be replaced on subsequent generator runs. Instead all custom logic should be placed in the subclasses - in "org.example.cayenne.persistent" package - those will never be overwritten by the + in "<code>org.example.cayenne.persistent</code>" package - those will never be overwritten by the class generator.</para> <para> <note> http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/object-context.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/object-context.xml b/docs/docbook/getting-started/src/docbkx/object-context.xml index 74d6e30..912db2f 100644 --- a/docs/docbook/getting-started/src/docbkx/object-context.xml +++ b/docs/docbook/getting-started/src/docbkx/object-context.xml @@ -24,7 +24,7 @@ <title>Creating the Main Class</title> <itemizedlist> <listitem> - <para>In IDEA create a new class called "Main" in the "org.example.cayenne" + <para>In IDEA create a new class called "Main" in the "<code>org.example.cayenne</code>" package.</para> </listitem> <listitem> @@ -40,9 +40,9 @@ public class Main { </listitem> <listitem> <para>The first thing you need to be able to access the database is to create a - ServerRuntime object (which is essentially a wrapper around Cayenne stack) and + <code>ServerRuntime</code> object (which is essentially a wrapper around Cayenne stack) and use it to obtain an instance of an - ObjectContext.<programlisting language="java">package org.example.cayenne; + <code>ObjectContext</code>.<programlisting language="java">package org.example.cayenne; import org.apache.cayenne.ObjectContext; import org.apache.cayenne.configuration.server.ServerRuntime; @@ -67,7 +67,7 @@ public class Main { <section xml:id="runnning-app"> <title>Running Application</title> <para>Let's check what happens when you run the application. But before we do that we need - to add another dependency to the pom.xml - Apache Derby, our embedded database engine. + to add another dependency to the <code>pom.xml</code> - Apache Derby, our embedded database engine. The following piece of XML needs to be added to the <code><dependencies>...</dependencies></code> section, where we already have Cayenne jars:<programlisting language="xml"><dependency> http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/object-relational-mapping.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/object-relational-mapping.xml b/docs/docbook/getting-started/src/docbkx/object-relational-mapping.xml index 5144592..96e6b60 100644 --- a/docs/docbook/getting-started/src/docbkx/object-relational-mapping.xml +++ b/docs/docbook/getting-started/src/docbkx/object-relational-mapping.xml @@ -37,28 +37,36 @@ <section xml:id="mapping-db-tables-and-columns"> <title>Mapping Database Tables and Columns</title> <para>Lets go back to CayenneModeler where we have the newly created project open and start - by adding the ARTIST table. Database tables are called <emphasis role="bold" - >"DbEntities"</emphasis> in Cayenne mapping (those can be actual tables or database - views). </para> - <para>Select "datamap" on the left-hand side project tree and click "Create DbEntity" button + by adding the ARTIST table. Database tables are called <emphasis role="bold">"DbEntities"</emphasis> + in Cayenne mapping (those can be actual tables or database views). + </para> + <para>Select "datamap" on the left-hand side project tree and click "Create DbEntity" button <inlinemediaobject> + <imageobject> + <imagedata fileref="images/icon-dbentity.gif" scalefit="0" valign="bottom" width="100%"/> + </imageobject> + </inlinemediaobject> (or use "Project > Create DbEntity" menu). A new DbEntity is created. In "DbEntity - Name" field enter "ARTIST". Then click on "Create Attribute" button on the entity + Name" field enter "ARTIST". Then click on "Create Attribute" button <inlinemediaobject> + <imageobject> + <imagedata fileref="images/icon-attribute.gif" scalefit="0" valign="bottom" width="100%"/> + </imageobject> + </inlinemediaobject> on the entity toolbar (third button from the left). This action changes the view to the "Attribute" tab and adds a new attribute (attribute means a "table column" in this case) called - "untitledAttr". Let's rename it to ID, make it an INTEGER and make it a PK:</para> + "untitledAttr". Let's rename it to ID, make it an <code>INTEGER</code> and make it a PK: + </para> <para><inlinemediaobject> <imageobject> <imagedata fileref="images/modeler-artistid.png" scalefit="1" width="100%"/> </imageobject> </inlinemediaobject></para> - <para>Similarly add NAME VARCHAR(200) and DATE_OF_BIRTH DATE attributes. After that repeat + <para>Similarly add NAME <code>VARCHAR(200)</code> and DATE_OF_BIRTH <code>DATE</code> attributes. After that repeat this procedure for PAINTING and GALLERY entities to match DB schema shown above.</para> <para> <note> - <para>Don't forget to save your project periodically to - avoid losing your work. You will also have to refresh the project in Eclipse - after every CayenneModeler save, as Eclipse is by default unaware of any - changes made in the Modeler.</para> + <para> + Don't forget to save your project periodically to avoid losing your work. + </para> </note> </para> </section> @@ -74,7 +82,7 @@ <listitem> <para>Click on "Create Relationship" button on the entity toolbar <inlinemediaobject> <imageobject> - <imagedata fileref="images/icon-relationship.png" scalefit="1" width="100%"/> + <imagedata fileref="images/icon-relationship.png" scalefit="0" valign="bottom" width="100%"/> </imageobject> </inlinemediaobject> - a relationship called "untitledRel" is created.</para> </listitem> @@ -84,7 +92,7 @@ <listitem> <para>Click on the "Database Mapping" button <inlinemediaobject> <imageobject> - <imagedata fileref="images/icon-info.png" scalefit="1" width="100%"/> + <imagedata fileref="images/icon-info.png" scalefit="0" valign="bottom" width="100%"/> </imageobject> </inlinemediaobject> - relationship configuration dialog is presented. Here you can assign a name to the @@ -136,8 +144,11 @@ table individually.</para> <itemizedlist> <listitem> - <para>Select "ARTIST" DbEntity and click on "Create ObjEntity" button (a green class - icon) either on the entity toolbar or on the main toolbar. An ObjEntity called + <para>Select "ARTIST" DbEntity and click on "Create ObjEntity" button <inlinemediaobject> + <imageobject> + <imagedata fileref="images/icon-objentity.gif" scalefit="0" valign="bottom" width="100%"/> + </imageobject> + </inlinemediaobject> either on the entity toolbar or on the main toolbar. An ObjEntity called "Artist" is created with a Java class field set to "org.example.cayenne.persistent.Artist". The modeler transformed the database names to the Java-friendly names (e.g., if you click on the "Attributes" tab, @@ -155,9 +166,12 @@ <para>Now you need to synchronize relationships. Artist and Gallery entities were created when there was no related "Painting" entity, so their relationships were not set. <itemizedlist> <listitem> - <para>Click on the "Artist" ObjEntity and (optinally) change to the - "Relationships" tab. Now click on "Sync ObjEntity with DbEntity" button on - the toolbar (two yellow arrows) - you will see the "paintings" relationship + <para>Click on the "Artist" ObjEntity. Now click on "Sync ObjEntity with DbEntity" button on + the toolbar <inlinemediaobject> + <imageobject> + <imagedata fileref="images/icon-sync.gif" scalefit="0" valign="bottom" width="100%"/> + </imageobject> + </inlinemediaobject> - you will see the "paintings" relationship appear.</para> </listitem> <listitem> http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/persistent-objects.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/persistent-objects.xml b/docs/docbook/getting-started/src/docbkx/persistent-objects.xml index 1ae1b2f..2114835 100644 --- a/docs/docbook/getting-started/src/docbkx/persistent-objects.xml +++ b/docs/docbook/getting-started/src/docbkx/persistent-objects.xml @@ -24,10 +24,10 @@ <title>Inspecting and Customizing Persistent Objects</title> <para>Persistent classes in Cayenne implement a DataObject interface. If you inspect any of the classes generated earlier in this tutorial (e.g. - org.example.cayenne.persistent.Artist), you'll see that it extends a class with the name - that starts with underscore (org.example.cayenne.persistent.auto._Artist), which in turn - extends from org.apache.cayenne.CayenneDataObject. Splitting each persistent class into - user-customizable subclass (Xyz) and a generated superclass (_Xyz) is a useful technique + <code>org.example.cayenne.persistent.Artist</code>), you'll see that it extends a class with the name + that starts with underscore (<code>org.example.cayenne.persistent.auto._Artist</code>), which in turn + extends from <code>org.apache.cayenne.CayenneDataObject</code>. Splitting each persistent class into + user-customizable subclass (<code>Xyz</code>) and a generated superclass (<code>_Xyz</code>) is a useful technique to avoid overwriting the custom code when refreshing classes from the mapping model.</para> <para>Let's for instance add a utility method to the Artist class that sets Artist date of @@ -71,15 +71,15 @@ public class Artist extends _Artist { <section xml:id="create-new-objects"> <title>Create New Objects</title> <para>Now we'll create a bunch of objects and save them to the database. An object is - created and registered with ObjectContext using "newObject" method. Objects <emphasis - role="bold">must</emphasis> be registered with DataContext to be persisted and to + created and registered with <code>ObjectContext</code> using "<code>newObject</code>" method. Objects <emphasis + role="bold">must</emphasis> be registered with <code>DataContext</code> to be persisted and to allow setting relationships with other objects. Add this code to the "main" method of the Main class:</para> <programlisting language="java">Artist picasso = context.newObject(Artist.class); picasso.setName("Pablo Picasso"); picasso.setDateOfBirthString("18811025");</programlisting> <para>Note that at this point "picasso" object is only stored in memory and is not saved in - the database. Let's continue by adding a Metropolitan Museum "Gallery" object and a few + the database. Let's continue by adding a Metropolitan Museum "<code>Gallery</code>" object and a few Picasso "Paintings":</para> <programlisting language="java">Gallery metropolitan = context.newObject(Gallery.class); metropolitan.setName("Metropolitan Museum of Art"); @@ -90,9 +90,9 @@ girl.setName("Girl Reading at a Table"); Painting stein = context.newObject(Painting.class); stein.setName("Gertrude Stein");</programlisting> <para>Now we can link the objects together, establishing relationships. Note that in each - case below relationships are automatically estabslished in both directions (e.g. - picasso.addToPaintings(girl) has exactly the same effect as - girl.setToArtist(picasso)).</para> + case below relationships are automatically established in both directions (e.g. + <code>picasso.addToPaintings(girl)</code> has exactly the same effect as + <code>girl.setToArtist(picasso)</code>).</para> <programlisting language="java">picasso.addToPaintings(girl); picasso.addToPaintings(stein); @@ -140,7 +140,7 @@ INFO: === updated 2 rows. INFO: +++ transaction committed. </screen> <para>So first Cayenne creates the needed tables (remember, we used - "CreateIfNoSchemaStrategy"). Then it runs a number of inserts, generating primary keys + "<code>CreateIfNoSchemaStrategy</code>"). Then it runs a number of inserts, generating primary keys on the fly. Not bad for just a few lines of code.</para> </section> </section> http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/select-query.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/select-query.xml b/docs/docbook/getting-started/src/docbkx/select-query.xml index db96ead..e97fed3 100644 --- a/docs/docbook/getting-started/src/docbkx/select-query.xml +++ b/docs/docbook/getting-started/src/docbkx/select-query.xml @@ -18,12 +18,12 @@ <section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"> <title>Selecting Objects</title> - <para>This chapter shows how to select objects from the database using ObjectSelect query. </para> + <para>This chapter shows how to select objects from the database using <code>ObjectSelect</code> query. </para> <section xml:id="introducing-select-query"> <title>Introducing ObjectSelect</title> <para>It was shown before how to persist new objects. Cayenne queries are used to access - already saved objects. The primary query type used for selecting objects is <emphasis - role="italic">ObjectSelect</emphasis>. It can be mapped in CayenneModeler or created + already saved objects. The primary query type used for selecting objects is <code>ObjectSelect</code>. + It can be mapped in CayenneModeler or created via the API. We'll use the latter approach in this section. We don't have too much data in the database yet, but we can still demonstrate the main principles below.</para> <itemizedlist> @@ -36,7 +36,7 @@ INFO: === returned 2 rows. - took 18 ms.</screen> <itemizedlist> <listitem> - <para>Select paintings that start with "gi", ignoring case:</para> + <para>Select paintings that start with "<code>gi</code>", ignoring case:</para> </listitem> </itemizedlist> <programlisting language="java">List<Painting> paintings2 = ObjectSelect.query(Painting.class) http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/starting-project.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/starting-project.xml b/docs/docbook/getting-started/src/docbkx/starting-project.xml index 65f1aa7..5db363f 100644 --- a/docs/docbook/getting-started/src/docbkx/starting-project.xml +++ b/docs/docbook/getting-started/src/docbkx/starting-project.xml @@ -22,7 +22,7 @@ The goal of this chapter is to create a new Java project in IntelliJ IDEA containing a basic Cayenne mapping. It presents an introduction to CayenneModeler GUI tool, showing how to create the initial mapping - objects: DataDomain, DataNode, DataMap. + objects: <code>DataDomain</code>, <code>DataNode</code>, <code>DataMap</code>. </para> <section xml:id="create-new-project"> <title>Create a new Project in IntelliJ IDEA</title> @@ -76,8 +76,8 @@ <para>Click on the "New Project" button on Welcome screen. A new mapping project will appear that contains a single <emphasis role="bold">DataDomain</emphasis>. The meaning of a DataDomain is explained elsewhere in the User Guide. For now it is sufficient to - understand that DataDomain is the root of your mapping project.</para> - + understand that DataDomain is the root of your mapping project. + </para> </section> <section xml:id="create-datanode"> <title>Create a DataNode</title> @@ -85,7 +85,12 @@ >DataNode</emphasis>. DataNode is a descriptor of a single database your application will connect to. Cayenne mapping project can use more than one database, but for now, we'll only use one. With "project" selected on the left, click on "Create DataNode" - button on the toolbar (or select "Project > Create DataNode" from the menu.</para> + button <inlinemediaobject> + <imageobject> + <imagedata fileref="images/icon-node.gif" scalefit="0" width="100%"/> + </imageobject> + </inlinemediaobject> on the toolbar (or select "Project > Create DataNode" from the menu. + </para> <para>A new DataNode is displayed. Now you need to specify JDBC connection parameters. For an in-memory Derby database you can enter the following settings: <itemizedlist> <listitem> @@ -103,7 +108,7 @@ </note> </para> <para>Also you will need to change "Schema Update Strategy". Select - "org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy" from the dropdown, so that + "<code>org.apache.cayenne.access.dbsync.CreateIfNoSchemaStrategy</code>" from the dropdown, so that Cayenne creates a new schema on Derby based on the ORM mapping when the application starts.</para> <para> @@ -118,6 +123,11 @@ <title>Create a DataMap</title> <para>Now you will create a <emphasis role="bold">DataMap</emphasis>. DataMap is an object that holds all the mapping information. To create it, click on "Create DataMap" button + <inlinemediaobject> + <imageobject> + <imagedata fileref="images/icon-datamap.gif" scalefit="0" width="100%"/> + </imageobject> + </inlinemediaobject> (or select a corresponding menu item). Note that the newly created DataMap is automatically linked to the DataNode that you created in the previous step. If there is more than one DataNode, you may need to link a DataMap to the correct node manually. In @@ -125,7 +135,7 @@ map. </para> <para>You can leave all the DataMap defaults unchanged except for one - "Java Package". - Enter "org.example.cayenne.persistent". This name will later be used for all persistent + Enter "<code>org.example.cayenne.persistent</code>". This name will later be used for all persistent classes. </para> <para> @@ -139,16 +149,16 @@ <section xml:id="save-project"> <title>Save the Project</title> <para>Before you proceed with the actual mapping, let's save the project. Click on "Save" - button in the toolbar and navigate to the "tutorial" IDEA project folder that was - created earlier in this section and its "src/main/resources" subfolder and save the - project there. Now go back to IDEA you will see two Cayenne XML files.</para> + button in the toolbar and navigate to the "<code>tutorial</code>" IDEA project folder that was + created earlier in this section and its "<code>src/main/resources</code>" subfolder and save the + project there. Now go back to IDEA and you will see two Cayenne XML files.</para> <para><inlinemediaobject> <imageobject> <imagedata fileref="images/idea-xmlfiles.png"/> </imageobject> </inlinemediaobject></para> <para>Note that the location of the XML files is not coincidental. Cayenne runtime looks for - "cayenne-*.xml" file in the application CLASSPATH and "src/main/resources" folder should + "cayenne-*.xml" file in the application <code>CLASSPATH</code> and "<code>src/main/resources</code>" folder should already be a "class folder" in IDEA for our project (and is also a standard location that Maven would copy to a jar file, if we were using Maven from command-line).</para> </section> http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/docbkx/webapp.xml ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/docbkx/webapp.xml b/docs/docbook/getting-started/src/docbkx/webapp.xml index b50a521..9452e83 100644 --- a/docs/docbook/getting-started/src/docbkx/webapp.xml +++ b/docs/docbook/getting-started/src/docbkx/webapp.xml @@ -46,11 +46,11 @@ <para>So let's convert the tutorial that we created to a web application:</para> <itemizedlist> <listitem> - <para>In Eclipse under "tutorial" project folder create a new folder - "src/main/webapp/WEB-INF".</para> + <para>In IDEA under "tutorial" project folder create a new folder + "<code>src/main/webapp/WEB-INF</code>".</para> </listitem> <listitem> - <para>Under "WEB-INF" create a new file "web.xml" (a standard web app descriptor): </para> + <para>Under "<code>WEB-INF</code>" create a new file "<code>web.xml</code>" (a standard web app descriptor): </para> <para> <emphasis role="bold">web.xml</emphasis> <programlisting language="xml"><?xml version="1.0" encoding="utf-8"?> @@ -78,10 +78,10 @@ </web-app></programlisting></para> </listitem> <listitem> - <para>Create the artist browser page src/main/webapp/index.jsp file with the + <para>Create the artist browser page <code>src/main/webapp/index.jsp</code> file with the following contents: </para> <para><emphasis role="bold">webapp/index.jsp</emphasis> - <programlisting language="jsp"><%@ page language="java" contentType="text/html" %> + <programlisting language="xml"><%@ page language="java" contentType="text/html" %> <%@ page import="org.example.cayenne.persistent.*" %> <%@ page import="org.apache.cayenne.*" %> <%@ page import="org.apache.cayenne.query.*" %> @@ -117,10 +117,10 @@ </html> </programlisting></para> </listitem> <listitem> - <para>Create the artist editor page src/main/webapp/detail.jsp with the following + <para>Create the artist editor page <code>src/main/webapp/detail.jsp</code> with the following content: </para> <para><emphasis role="bold">webapp/detail.jsp</emphasis> - <programlisting language="jsp"><%@ page language="java" contentType="text/html" %> + <programlisting language="xml"><%@ page language="java" contentType="text/html" %> <%@ page import="org.example.cayenne.persistent.*" %> <%@ page import="org.apache.cayenne.*" %> <%@ page import="java.util.*" %> @@ -201,7 +201,7 @@ </dependency></programlisting> <para>Also to run the web application we'll use "maven-jetty-plugin". To activate it, - let's add the following piece of code to the "pom.xml" file, following the "dependencies" + let's add the following piece of code to the "<code>pom.xml</code>" file, following the "dependencies" section and save the POM:</para> <programlisting language="xml"><build> <plugins> @@ -264,9 +264,9 @@ INFO::Started SelectChannelConnector@0.0.0.0:8080 <para>So the Jetty container just started.</para> </listitem> <listitem> - <para>Now go to <emphasis role="italic">http://localhost:8080/tutorial/</emphasis> + <para>Now go to <link xlink:href="http://localhost:8080/tutorial/">http://localhost:8080/tutorial/</link> URL. You should see "No artists found message" in the web browser and - the following output in the Eclipse console:</para> + the following output in the IDEA console:</para> <screen>INFO: Loading XML configuration resource from file:/.../tutorial/target/classes/cayenne-project.xml INFO: loading user name and password. INFO: Created connection pool: jdbc:derby:memory:testdb;create=true http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/images/icon-attribute.gif ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/images/icon-attribute.gif b/docs/docbook/getting-started/src/images/icon-attribute.gif new file mode 100644 index 0000000..3a5ce56 Binary files /dev/null and b/docs/docbook/getting-started/src/images/icon-attribute.gif differ http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/images/icon-datamap.gif ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/images/icon-datamap.gif b/docs/docbook/getting-started/src/images/icon-datamap.gif new file mode 100644 index 0000000..7910409 Binary files /dev/null and b/docs/docbook/getting-started/src/images/icon-datamap.gif differ http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/images/icon-dbentity.gif ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/images/icon-dbentity.gif b/docs/docbook/getting-started/src/images/icon-dbentity.gif new file mode 100644 index 0000000..d7e9a76 Binary files /dev/null and b/docs/docbook/getting-started/src/images/icon-dbentity.gif differ http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/images/icon-node.gif ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/images/icon-node.gif b/docs/docbook/getting-started/src/images/icon-node.gif new file mode 100644 index 0000000..800c76d Binary files /dev/null and b/docs/docbook/getting-started/src/images/icon-node.gif differ http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/images/icon-objentity.gif ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/images/icon-objentity.gif b/docs/docbook/getting-started/src/images/icon-objentity.gif new file mode 100644 index 0000000..81e24ad Binary files /dev/null and b/docs/docbook/getting-started/src/images/icon-objentity.gif differ http://git-wip-us.apache.org/repos/asf/cayenne/blob/2c2516c9/docs/docbook/getting-started/src/images/icon-sync.gif ---------------------------------------------------------------------- diff --git a/docs/docbook/getting-started/src/images/icon-sync.gif b/docs/docbook/getting-started/src/images/icon-sync.gif new file mode 100644 index 0000000..4bf7cff Binary files /dev/null and b/docs/docbook/getting-started/src/images/icon-sync.gif differ