You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ab...@apache.org on 2019/06/07 13:22:11 UTC

[cayenne] branch STABLE-4.0 updated (8830e8c -> ca8926b)

This is an automated email from the ASF dual-hosted git repository.

abulatski pushed a change to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git.


    from 8830e8c  CAY-2573 DI field injection is triggered when creating sql Driver
     new bc5cf82  CAY-2519 Use NoopEventManager if SERVER_CONTEXTS_SYNC_PROPERTY is false
     new ca8926b  Merge PR #365

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 RELEASE-NOTES.txt                                  |  1 +
 .../configuration/rop/client/ClientModule.java     |  8 ++-
 .../org/apache/cayenne/access/DataContext.java     | 10 +++-
 .../cayenne/configuration/server/ServerModule.java | 16 ++---
 .../EventManagerProvider.java}                     | 19 +++---
 .../apache/cayenne/event/NoopEventManager.java}    | 69 +++++++++-------------
 6 files changed, 60 insertions(+), 63 deletions(-)
 copy cayenne-server/src/main/java/org/apache/cayenne/{cache/MapQueryCacheProvider.java => event/EventManagerProvider.java} (72%)
 copy cayenne-server/src/{test/java/org/apache/cayenne/event/MockEventManager.java => main/java/org/apache/cayenne/event/NoopEventManager.java} (62%)


[cayenne] 02/02: Merge PR #365

Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

abulatski pushed a commit to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit ca8926b7ced71cdca4592588344182dadb8f16ff
Merge: 8830e8c bc5cf82
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Fri Jun 7 16:20:52 2019 +0300

    Merge PR #365

 RELEASE-NOTES.txt                                  |  1 +
 .../configuration/rop/client/ClientModule.java     |  8 ++-
 .../org/apache/cayenne/access/DataContext.java     | 10 ++-
 .../cayenne/configuration/server/ServerModule.java | 16 ++---
 .../apache/cayenne/event/EventManagerProvider.java | 44 ++++++++++++
 .../org/apache/cayenne/event/NoopEventManager.java | 81 ++++++++++++++++++++++
 6 files changed, 147 insertions(+), 13 deletions(-)

diff --cc RELEASE-NOTES.txt
index 5ceac0d,f462915..ece7e32
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@@ -12,16 -12,11 +12,17 @@@ Release: 4.0.
  Date:
  ----------------------------------
  
 -=======
  Changes/New Features:
  
 -CAY-2517 EventManager: optimization of adding listeners
+ CAY-2519 Use NoopEventManager if SERVER_CONTEXTS_SYNC_PROPERTY is false
 +CAY-2570 Use MySQL adapter for latest versions of MariaDB
 +
 +Bug Fixes:
 +
 +CAY-2550 Modeler: ObjAttribute inspector modifies wrong columns in attribute table
 +CAY-2559 Modeler: Warning dialog shows wrong information after changing target entity in dbRelationship
 +CAY-2573 DI field injection is triggered when creating sql Driver
 +CAY-2584 Crypto: can't use ColumnSelect with encrypted columns
  
  ----------------------------------
  Release: 4.0.1


[cayenne] 01/02: CAY-2519 Use NoopEventManager if SERVER_CONTEXTS_SYNC_PROPERTY is false

Posted by ab...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

abulatski pushed a commit to branch STABLE-4.0
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit bc5cf828a853ba83468e9a6fcaf9d60433be9f11
Author: Arseni Bulatski <an...@gmail.com>
AuthorDate: Thu Feb 7 14:58:05 2019 +0300

    CAY-2519 Use NoopEventManager if SERVER_CONTEXTS_SYNC_PROPERTY is false
---
 RELEASE-NOTES.txt                                  | 12 +++-
 .../configuration/rop/client/ClientModule.java     |  8 ++-
 .../org/apache/cayenne/access/DataContext.java     | 10 ++-
 .../cayenne/configuration/server/ServerModule.java | 16 ++---
 .../apache/cayenne/event/EventManagerProvider.java | 44 ++++++++++++
 .../org/apache/cayenne/event/NoopEventManager.java | 81 ++++++++++++++++++++++
 6 files changed, 157 insertions(+), 14 deletions(-)

diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index a27c383..f462915 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -8,6 +8,17 @@ To browse individual bug reports check out project issue tracker:
 https://issues.apache.org/jira/browse/CAY
 
 ----------------------------------
+Release: 4.0.2
+Date:
+----------------------------------
+
+=======
+Changes/New Features:
+
+CAY-2517 EventManager: optimization of adding listeners
+CAY-2519 Use NoopEventManager if SERVER_CONTEXTS_SYNC_PROPERTY is false
+
+----------------------------------
 Release: 4.0.1
 Date: December 20, 2018
 ----------------------------------
@@ -20,7 +31,6 @@ CAY-2474 Modeler: swap buttons in dialog toolbar
 CAY-2475 Modeler: move inheritance icon to name column in objAttr table and objRel table
 CAY-2476 Modeler: Fixed wrong behaviour of code generation dialog
 CAY-2479 Modeler: update cgen dialog
-CAY-2517 EventManager: optimization of adding listeners
 
 Bug Fixes:
 
diff --git a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
index 690ed2c..0a0553e 100644
--- a/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
+++ b/cayenne-client/src/main/java/org/apache/cayenne/configuration/rop/client/ClientModule.java
@@ -30,11 +30,13 @@ import org.apache.cayenne.configuration.server.ServerModule;
 import org.apache.cayenne.di.Binder;
 import org.apache.cayenne.di.MapBuilder;
 import org.apache.cayenne.di.Module;
-import org.apache.cayenne.event.DefaultEventManager;
 import org.apache.cayenne.event.EventManager;
+import org.apache.cayenne.event.EventManagerProvider;
 import org.apache.cayenne.remote.ClientConnection;
 import org.apache.cayenne.remote.RemoteService;
-import org.apache.cayenne.rop.*;
+import org.apache.cayenne.rop.HttpClientConnectionProvider;
+import org.apache.cayenne.rop.ProxyRemoteService;
+import org.apache.cayenne.rop.ROPSerializationService;
 import org.apache.cayenne.rop.http.ClientHessianSerializationServiceProvider;
 
 /**
@@ -87,7 +89,7 @@ public class ClientModule implements Module {
         binder.bind(ROPSerializationService.class).toProvider(ClientHessianSerializationServiceProvider.class);
         binder.bind(RemoteService.class).to(ProxyRemoteService.class);
         binder.bind(ClientConnection.class).toProvider(HttpClientConnectionProvider.class);
-        binder.bind(EventManager.class).to(DefaultEventManager.class);
+        binder.bind(EventManager.class).toProvider(EventManagerProvider.class);
         binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
         binder.bind(DataChannel.class).toProvider(ClientChannelProvider.class);
         binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
index bc80736..d430914 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/DataContext.java
@@ -44,6 +44,7 @@ import org.apache.cayenne.ResultIterator;
 import org.apache.cayenne.access.util.IteratedSelectObserver;
 import org.apache.cayenne.di.Injector;
 import org.apache.cayenne.event.EventManager;
+import org.apache.cayenne.event.NoopEventManager;
 import org.apache.cayenne.graph.ChildDiffLoader;
 import org.apache.cayenne.graph.CompoundDiff;
 import org.apache.cayenne.graph.GraphDiff;
@@ -53,7 +54,12 @@ import org.apache.cayenne.map.DbRelationship;
 import org.apache.cayenne.map.ObjAttribute;
 import org.apache.cayenne.map.ObjEntity;
 import org.apache.cayenne.map.ObjRelationship;
-import org.apache.cayenne.query.*;
+import org.apache.cayenne.query.EntityResultSegment;
+import org.apache.cayenne.query.MappedExec;
+import org.apache.cayenne.query.MappedSelect;
+import org.apache.cayenne.query.Query;
+import org.apache.cayenne.query.QueryMetadata;
+import org.apache.cayenne.query.Select;
 import org.apache.cayenne.reflect.AttributeProperty;
 import org.apache.cayenne.reflect.ClassDescriptor;
 import org.apache.cayenne.reflect.PropertyVisitor;
@@ -140,7 +146,7 @@ public class DataContext extends BaseContext {
 
         EventManager eventManager = channel.getEventManager();
 
-        if (eventManager != null) {
+        if (eventManager != null && !(eventManager instanceof NoopEventManager)) {
             mergeHandler = new DataContextMergeHandler(this);
 
             // listen to our channel events...
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
index 44b926a..ccc20ee 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/ServerModule.java
@@ -18,6 +18,9 @@
  ****************************************************************/
 package org.apache.cayenne.configuration.server;
 
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
 import org.apache.cayenne.DataChannel;
 import org.apache.cayenne.DataChannelFilter;
 import org.apache.cayenne.access.DataDomain;
@@ -55,6 +58,7 @@ import org.apache.cayenne.access.types.TimeType;
 import org.apache.cayenne.access.types.TimestampType;
 import org.apache.cayenne.access.types.UUIDValueType;
 import org.apache.cayenne.access.types.UtilDateType;
+import org.apache.cayenne.access.types.ValueObjectType;
 import org.apache.cayenne.access.types.ValueObjectTypeRegistry;
 import org.apache.cayenne.access.types.VoidType;
 import org.apache.cayenne.ashwood.AshwoodEntitySorter;
@@ -97,14 +101,13 @@ import org.apache.cayenne.di.MapBuilder;
 import org.apache.cayenne.di.Module;
 import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
 import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.event.DefaultEventManager;
-import org.apache.cayenne.event.NoopEventBridgeProvider;
 import org.apache.cayenne.event.EventBridge;
 import org.apache.cayenne.event.EventManager;
-import org.apache.cayenne.log.Slf4jJdbcEventLogger;
+import org.apache.cayenne.event.EventManagerProvider;
+import org.apache.cayenne.event.NoopEventBridgeProvider;
 import org.apache.cayenne.log.JdbcEventLogger;
+import org.apache.cayenne.log.Slf4jJdbcEventLogger;
 import org.apache.cayenne.map.EntitySorter;
-import org.apache.cayenne.access.types.ValueObjectType;
 import org.apache.cayenne.resource.ClassLoaderResourceLocator;
 import org.apache.cayenne.resource.ResourceLocator;
 import org.apache.cayenne.tx.DefaultTransactionFactory;
@@ -114,9 +117,6 @@ import org.apache.cayenne.tx.TransactionFilter;
 import org.apache.cayenne.tx.TransactionManager;
 import org.apache.cayenne.velocity.VelocitySQLTemplateProcessor;
 
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
 /**
  * A DI module containing all Cayenne server runtime configuration.
  *
@@ -341,7 +341,7 @@ public class ServerModule implements Module {
 
         binder.bind(ConfigurationNameMapper.class).to(DefaultConfigurationNameMapper.class);
 
-        binder.bind(EventManager.class).to(DefaultEventManager.class);
+        binder.bind(EventManager.class).toProvider(EventManagerProvider.class);
 
         binder.bind(QueryCache.class).toProvider(MapQueryCacheProvider.class);
 
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/event/EventManagerProvider.java b/cayenne-server/src/main/java/org/apache/cayenne/event/EventManagerProvider.java
new file mode 100644
index 0000000..ddf4360
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/event/EventManagerProvider.java
@@ -0,0 +1,44 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.event;
+
+import org.apache.cayenne.configuration.Constants;
+import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.di.DIRuntimeException;
+import org.apache.cayenne.di.Inject;
+import org.apache.cayenne.di.Provider;
+
+/**
+ * @since 4.0.2
+ */
+public class EventManagerProvider implements Provider<EventManager> {
+
+    protected RuntimeProperties properties;
+
+    public EventManagerProvider(@Inject RuntimeProperties properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public EventManager get() throws DIRuntimeException {
+        boolean sync = properties.getBoolean(Constants.SERVER_CONTEXTS_SYNC_PROPERTY, true);
+
+        return sync ? new DefaultEventManager() : new NoopEventManager();
+    }
+}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/event/NoopEventManager.java b/cayenne-server/src/main/java/org/apache/cayenne/event/NoopEventManager.java
new file mode 100644
index 0000000..db00c36
--- /dev/null
+++ b/cayenne-server/src/main/java/org/apache/cayenne/event/NoopEventManager.java
@@ -0,0 +1,81 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.event;
+
+import java.util.EventObject;
+
+/**
+ * @since 4.0.2
+ */
+public class NoopEventManager implements EventManager{
+    @Override
+    public boolean isSingleThreaded() {
+        return false;
+    }
+
+    @Override
+    public void addListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject) {
+
+    }
+
+    @Override
+    public void addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject) {
+
+    }
+
+    @Override
+    public void addListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender) {
+
+    }
+
+    @Override
+    public void addNonBlockingListener(Object listener, String methodName, Class<?> eventParameterClass, EventSubject subject, Object sender) {
+
+    }
+
+    @Override
+    public boolean removeListener(Object listener) {
+        return false;
+    }
+
+    @Override
+    public boolean removeAllListeners(EventSubject subject) {
+        return false;
+    }
+
+    @Override
+    public boolean removeListener(Object listener, EventSubject subject) {
+        return false;
+    }
+
+    @Override
+    public boolean removeListener(Object listener, EventSubject subject, Object sender) {
+        return false;
+    }
+
+    @Override
+    public void postEvent(EventObject event, EventSubject subject) {
+
+    }
+
+    @Override
+    public void postNonBlockingEvent(EventObject event, EventSubject subject) {
+
+    }
+}