You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by dk...@apache.org on 2016/03/01 17:56:49 UTC

[1/3] cayenne git commit: CAY-2065 Change Hessian dependency scope in ROP tutorials from provided to compile to avoid ClassNotFoundException when running them

Repository: cayenne
Updated Branches:
  refs/heads/master c2e5d6deb -> a0e324fcc


CAY-2065 Change Hessian dependency scope in ROP tutorials from provided to compile to avoid ClassNotFoundException when running them


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/10c07901
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/10c07901
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/10c07901

Branch: refs/heads/master
Commit: 10c07901573cccb1922256dc916ae54e5cac4443
Parents: c2e5d6d
Author: Dzmitry Kazimirchyk <dk...@gmail.com>
Authored: Tue Mar 1 18:48:38 2016 +0300
Committer: Dzmitry Kazimirchyk <dk...@gmail.com>
Committed: Tue Mar 1 19:18:07 2016 +0300

----------------------------------------------------------------------
 tutorials/tutorial-rop-client/pom.xml | 1 +
 tutorials/tutorial-rop-server/pom.xml | 2 ++
 2 files changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/10c07901/tutorials/tutorial-rop-client/pom.xml
----------------------------------------------------------------------
diff --git a/tutorials/tutorial-rop-client/pom.xml b/tutorials/tutorial-rop-client/pom.xml
index ecb6ba9..37f8a33 100644
--- a/tutorials/tutorial-rop-client/pom.xml
+++ b/tutorials/tutorial-rop-client/pom.xml
@@ -33,6 +33,7 @@
 		<dependency>
 			<groupId>com.caucho</groupId>
             <artifactId>hessian</artifactId>
+			<scope>compile</scope>
 		</dependency>
 	</dependencies>
 	

http://git-wip-us.apache.org/repos/asf/cayenne/blob/10c07901/tutorials/tutorial-rop-server/pom.xml
----------------------------------------------------------------------
diff --git a/tutorials/tutorial-rop-server/pom.xml b/tutorials/tutorial-rop-server/pom.xml
index ecc7b75..96a6286 100644
--- a/tutorials/tutorial-rop-server/pom.xml
+++ b/tutorials/tutorial-rop-server/pom.xml
@@ -34,10 +34,12 @@
 		<dependency>
 			<groupId>org.apache.derby</groupId>
 			<artifactId>derby</artifactId>
+			<scope>compile</scope>
 		</dependency>
 		<dependency>
 			<groupId>com.caucho</groupId>
             <artifactId>hessian</artifactId>
+			<scope>compile</scope>
 		</dependency>
 	</dependencies>
 


[2/3] cayenne git commit: CAY-2065 Update ROP client tutorial code to use modern ObjectSelect instead of unparameterized SelectQuery

Posted by dk...@apache.org.
CAY-2065 Update ROP client tutorial code to use modern ObjectSelect instead of unparameterized SelectQuery


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/812b1d83
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/812b1d83
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/812b1d83

Branch: refs/heads/master
Commit: 812b1d837c152654a9d1715e95b624abcc758b45
Parents: 10c0790
Author: Dzmitry Kazimirchyk <dk...@gmail.com>
Authored: Tue Mar 1 19:22:35 2016 +0300
Committer: Dzmitry Kazimirchyk <dk...@gmail.com>
Committed: Tue Mar 1 19:22:35 2016 +0300

----------------------------------------------------------------------
 .../cayenne/tutorial/persistent/client/Main.java   | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/812b1d83/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java
----------------------------------------------------------------------
diff --git a/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java b/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java
index 3997b06..edfd4a8 100644
--- a/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java
+++ b/tutorials/tutorial-rop-client/src/main/java/org/apache/cayenne/tutorial/persistent/client/Main.java
@@ -27,6 +27,7 @@ import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.configuration.Constants;
 import org.apache.cayenne.configuration.rop.client.ClientRuntime;
 import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.query.ObjectSelect;
 import org.apache.cayenne.query.SelectQuery;
 
 public class Main {
@@ -75,20 +76,16 @@ public class Main {
     }
 
     static void selectTutorial(ObjectContext context) {
-        // SelectQuery examples
-        SelectQuery<Painting> select1 = SelectQuery.query(Painting.class);
-        List<Painting> paintings1 = context.select(select1);
+        // ObjectSelect examples
+        List<Painting> paintings1 = ObjectSelect.query(Painting.class).select(context);
 
-        Expression qualifier2 = Painting.NAME.likeIgnoreCase("gi%");
-        SelectQuery<Painting> select2 = SelectQuery.query(Painting.class, qualifier2);
-        List<Painting> paintings2 = context.select(select2);
+        List<Painting> paintings2 = ObjectSelect.query(Painting.class)
+                .where(Painting.NAME.likeIgnoreCase("gi%")).select(context);
     }
 
     static void deleteTutorial(ObjectContext context) {
-        // Delete object examples
-        Expression qualifier = Artist.NAME.eq("Pablo Picasso");
-        SelectQuery<Artist> selectToDelete = SelectQuery.query(Artist.class, qualifier);
-        Artist picasso = (Artist) Cayenne.objectForQuery(context, selectToDelete);
+        // Delete object example
+        Artist picasso = ObjectSelect.query(Artist.class).where(Artist.NAME.eq("Pablo Picasso")).selectOne(context);
 
         if (picasso != null) {
             context.deleteObjects(picasso);


[3/3] cayenne git commit: CAY-2065 Update ROP tutorial docs

Posted by dk...@apache.org.
CAY-2065 Update ROP tutorial docs


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/a0e324fc
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/a0e324fc
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/a0e324fc

Branch: refs/heads/master
Commit: a0e324fcc5df0c5ec4d2ddf05741e8a3b795ff24
Parents: 812b1d8
Author: Dzmitry Kazimirchyk <dk...@gmail.com>
Authored: Tue Mar 1 19:54:01 2016 +0300
Committer: Dzmitry Kazimirchyk <dk...@gmail.com>
Committed: Tue Mar 1 19:54:01 2016 +0300

----------------------------------------------------------------------
 .../src/docbkx/authentication.xml               | 63 ++++++++++----------
 .../src/docbkx/client-code.xml                  | 30 +++++-----
 .../src/docbkx/client-project.xml               |  6 +-
 .../src/docbkx/web-service.xml                  |  6 +-
 4 files changed, 50 insertions(+), 55 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/a0e324fc/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/authentication.xml b/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
index 04e251f..0872044 100644
--- a/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
+++ b/docs/docbook/getting-started-rop/src/docbkx/authentication.xml
@@ -88,41 +88,38 @@
     <section xml:id="running-client">
         <title>Running Client with Basic Authentication</title>
         <para>If you run the client without any changes, you'll get the following error:</para>
-        <programlisting language="java">org.apache.cayenne.remote.hessian.HessianConnection connect
-INFO: Connecting to [http://localhost:8080/tutorial/cayenne-service] - dedicated session.
-org.apache.cayenne.remote.hessian.HessianConnection connect
-INFO: Error establishing remote session. URL - http://localhost:8080/tutorial/cayenne-service; 
-      CAUSE - cannot retry due to server authentication, in streaming mode
-java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
-    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1257)
-    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
-    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:168)
-    at $Proxy0.establishSession(Unknown Source)
-    at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:210)
-    at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:114)
-    at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:337)
-    at org.apache.cayenne.remote.ClientChannel.&lt;init>(ClientChannel.java:108)
-    at org.example.cayenne.Main.main(Main.java:25)
-Exception in thread "main" org.apache.cayenne.CayenneRuntimeException: [v.3.1M3 Sep 19 2011 07:12:41] 
-Error establishing remote session. URL - http://localhost:8080/tutorial/cayenne-service; 
-CAUSE - cannot retry due to server authentication, in streaming mode
-    at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:229)
-    at org.apache.cayenne.remote.hessian.HessianConnection.getServerEventBridge(HessianConnection.java:114)
-    at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:337)
-    at org.apache.cayenne.remote.ClientChannel.&lt;init>(ClientChannel.java:108)
-    at org.example.cayenne.Main.main(Main.java:25)
-Caused by: java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode
-    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1257)
-    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
-    at com.caucho.hessian.client.HessianProxy.invoke(HessianProxy.java:168)
-    at $Proxy0.establishSession(Unknown Source)
-    at org.apache.cayenne.remote.hessian.HessianConnection.connect(HessianConnection.java:210)
-    ... 4 more</programlisting>
+        <programlisting language="java">Mar 01, 2016 7:25:50 PM org.apache.cayenne.rop.http.HttpROPConnector logConnect
+INFO: Connecting to [cayenne-user@http://localhost:8080/tutorial-rop-server/cayenne-service] - dedicated session.
+Mar 01, 2016 7:25:50 PM org.apache.cayenne.rop.HttpClientConnection connect
+INFO: Server returned HTTP response code: 401 for URL: http://localhost:8080/tutorial-rop-server/cayenne-service
+java.rmi.RemoteException: Server returned HTTP response code: 401 for URL: http://localhost:8080/tutorial-rop-server/cayenne-service
+	at org.apache.cayenne.rop.ProxyRemoteService.establishSession(ProxyRemoteService.java:45)
+	at org.apache.cayenne.rop.HttpClientConnection.connect(HttpClientConnection.java:85)
+	at org.apache.cayenne.rop.HttpClientConnection.getServerEventBridge(HttpClientConnection.java:68)
+	at org.apache.cayenne.remote.ClientChannel.setupRemoteChannelListener(ClientChannel.java:279)
+	at org.apache.cayenne.remote.ClientChannel.&lt;init>(ClientChannel.java:71)
+	at org.apache.cayenne.configuration.rop.client.ClientChannelProvider.get(ClientChannelProvider.java:48)
+	at org.apache.cayenne.configuration.rop.client.ClientChannelProvider.get(ClientChannelProvider.java:31)
+	at org.apache.cayenne.di.spi.CustomProvidersProvider.get(CustomProvidersProvider.java:39)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:43)
+	at org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:50)
+	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:139)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.value(FieldInjectingProvider.java:105)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.injectMember(FieldInjectingProvider.java:68)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.injectMembers(FieldInjectingProvider.java:59)
+	at org.apache.cayenne.di.spi.FieldInjectingProvider.get(FieldInjectingProvider.java:44)
+	at org.apache.cayenne.di.spi.DefaultScopeProvider.get(DefaultScopeProvider.java:50)
+	at org.apache.cayenne.di.spi.DefaultInjector.getInstance(DefaultInjector.java:134)
+	at org.apache.cayenne.configuration.CayenneRuntime.newContext(CayenneRuntime.java:134)
+	at org.apache.cayenne.tutorial.persistent.client.Main.main(Main.java:44)</programlisting>
         <para>Which is exactly what you'd expect, as the client is not authenticating itself. So
             change the line in Main.java where we obtained an ROP connection to this:</para>
-        <programlisting language="java">ClientConnection connection = new HessianConnection(
-        "http://localhost:8080/tutorial/cayenne-service",
-        "cayenne-user", "secret", null);</programlisting>
+        <programlisting language="java">Map&lt;String,String> properties = new HashMap&lt;>();
+properties.put(Constants.ROP_SERVICE_URL_PROPERTY, "http://localhost:8080/tutorial-rop-server/cayenne-service");
+properties.put(Constants.ROP_SERVICE_USERNAME_PROPERTY, "cayenne-user");
+properties.put(Constants.ROP_SERVICE_PASSWORD_PROPERTY, "secret");
+
+ClientRuntime runtime = new ClientRuntime(properties);</programlisting>
         <para>Try running again, and everything should work as before. Obviously in production
             environment, in addition to authentication you'll need to use HTTPS to access the server
             to prevent third-party evesdropping on your password and data.</para>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a0e324fc/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/client-code.xml b/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
index ee8a3b6..6dc3902 100644
--- a/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
+++ b/docs/docbook/getting-started-rop/src/docbkx/client-code.xml
@@ -36,10 +36,14 @@ public class Main {
 }</programlisting>
         <para>Now the part that is actually different from regular Cayenne - establishing the server
             connection and obtaining the ObjectContext:</para>
-        <programlisting language="java">ClientConnection connection = new HessianConnection("http://localhost:8080/tutorial/cayenne-service");
-DataChannel channel = new ClientChannel(connection, false, new DefaultEventManager(), false);
-ObjectContext context = new CayenneContext(channel);</programlisting>
-        <para>Note that the "channel" can be used to create as many peer ObjectContexts as needed
+        <programlisting language="java">Map&lt;String, String> properties = new HashMap&lt;>();
+properties.put(Constants.ROP_SERVICE_URL_PROPERTY, "http://localhost:8080/tutorial-rop-server/cayenne-service");
+properties.put(Constants.ROP_SERVICE_USERNAME_PROPERTY, "cayenne-user");
+properties.put(Constants.ROP_SERVICE_PASSWORD_PROPERTY, "secret");
+
+ClientRuntime runtime = new ClientRuntime(properties);
+ObjectContext context = runtime.newContext(); </programlisting>
+        <para>Note that the "runtime" can be used to create as many peer ObjectContexts as needed
             over the same connection, while ObjectContext is a kind of isolated "persistence
             session", similar to the server-side context. A few more notes. Since we are using
             HTTP(S) to communicate with ROP server, there's no need to explicitly close the
@@ -70,20 +74,14 @@ stein.setGallery(metropolitan);
 // saving all the changes above
 context.commitChanges();</programlisting>
         <para>Now let's select them back:</para>
-        <programlisting language="java">// SelectQuery examples
-SelectQuery select1 = new SelectQuery(Painting.class);
-List&lt;Painting&gt; paintings1 = context.performQuery(select1);
+        <programlisting language="java">// ObjectSelect examples
+List&lt;Painting> paintings1 = ObjectSelect.query(Painting.class).select(context);
 
-Expression qualifier2 = ExpressionFactory.likeIgnoreCaseExp(
-        Painting.NAME_PROPERTY, "gi%");
-SelectQuery select2 = new SelectQuery(Painting.class, qualifier2);
-List&lt;Painting&gt; paintings2 = context.performQuery(select2);</programlisting>
+List&lt;Painting> paintings2 = ObjectSelect.query(Painting.class)
+        .where(Painting.NAME.likeIgnoreCase("gi%")).select(context); </programlisting>
         <para>Now, delete:</para>
-        <programlisting language="java">Expression qualifier = ExpressionFactory.matchExp(Artist.NAME_PROPERTY,
-                "Pablo Picasso");
-SelectQuery selectToDelete = new SelectQuery(Artist.class, qualifier);
-Artist picasso = (Artist) DataObjectUtils.objectForQuery(context,
-        selectToDelete);
+        <programlisting language="java">// Delete object example
+Artist picasso = ObjectSelect.query(Artist.class).where(Artist.NAME.eq("Pablo Picasso")).selectOne(context); 
 
 if (picasso != null) {
     context.deleteObject(picasso);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a0e324fc/docs/docbook/getting-started-rop/src/docbkx/client-project.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/client-project.xml b/docs/docbook/getting-started-rop/src/docbkx/client-project.xml
index c5ead4b..9269675 100644
--- a/docs/docbook/getting-started-rop/src/docbkx/client-project.xml
+++ b/docs/docbook/getting-started-rop/src/docbkx/client-project.xml
@@ -96,12 +96,12 @@
             &lt;groupId&gt;org.apache.cayenne&lt;/groupId&gt;
             &lt;artifactId&gt;cayenne-client&lt;/artifactId&gt;
             &lt;!-- Here specify the version of Cayenne you are actually using --&gt;
-            &lt;version&gt;3.1M3&lt;/version&gt;
+            &lt;version&gt;4.0.M3&lt;/version&gt;
         &lt;/dependency&gt;
         &lt;dependency&gt;
         &lt;groupId&gt;com.caucho&lt;/groupId&gt;
-            &lt;artifactId&gt;resin-hessian&lt;/artifactId&gt;
-            &lt;version&gt;3.1.6&lt;/version&gt;
+            &lt;artifactId&gt;hessian&lt;/artifactId&gt;
+            &lt;version&gt;4.0.38&lt;/version&gt;
         &lt;/dependency&gt;
     &lt;/dependencies&gt;
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a0e324fc/docs/docbook/getting-started-rop/src/docbkx/web-service.xml
----------------------------------------------------------------------
diff --git a/docs/docbook/getting-started-rop/src/docbkx/web-service.xml b/docs/docbook/getting-started-rop/src/docbkx/web-service.xml
index 9532a04..ad60d44 100644
--- a/docs/docbook/getting-started-rop/src/docbkx/web-service.xml
+++ b/docs/docbook/getting-started-rop/src/docbkx/web-service.xml
@@ -29,8 +29,8 @@
         ...
         &lt;dependency&gt;
             &lt;groupId&gt;com.caucho&lt;/groupId&gt;
-            &lt;artifactId&gt;resin-hessian&lt;/artifactId&gt;
-            &lt;version&gt;3.1.6&lt;/version&gt;
+            &lt;artifactId&gt;hessian&lt;/artifactId&gt;
+            &lt;version&gt;4.0.38&lt;/version&gt;
         &lt;/dependency&gt;
     &lt;/dependencies&gt;
 
@@ -83,7 +83,7 @@
     &lt;display-name>Cayenne Tutorial&lt;/display-name>
     &lt;servlet>
         &lt;servlet-name>cayenne-project&lt;/servlet-name>
-        &lt;servlet-class>org.apache.cayenne.configuration.rop.server.ROPHessianServlet&lt;/servlet-class>
+        &lt;servlet-class>org.apache.cayenne.rop.ROPServlet&lt;/servlet-class>
         &lt;load-on-startup>0&lt;/load-on-startup>
     &lt;/servlet>
     &lt;servlet-mapping>