You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2022/07/11 16:27:20 UTC
[cayenne] 01/02: CAY-2737 Cayenne 4.3: cleanup deprecated code - remove cayenne-xmpp, cayenne-jgroups and cayenne-jms modules
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit b4df16bc5f4252fbad62b7241a11a92f69460bad
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Mon Jul 11 19:10:57 2022 +0300
CAY-2737 Cayenne 4.3: cleanup deprecated code
- remove cayenne-xmpp, cayenne-jgroups and cayenne-jms modules
---
assembly/pom.xml | 18 --
.../assemblies/generic/assembly-generic.xml | 3 -
.../main/resources/assemblies/mac/assembly-mac.xml | 3 -
.../assemblies/windows/assembly-windows.xml | 3 -
cayenne-jgroups/pom.xml | 82 ------
.../org/apache/cayenne/event/JGroupsModule.java | 63 -----
.../cayenne/event/JGroupsServerModuleProvider.java | 48 ----
.../org/apache/cayenne/event/JavaGroupsBridge.java | 232 ----------------
.../cayenne/event/JavaGroupsBridgeFactory.java | 49 ----
.../cayenne/event/JavaGroupsBridgeProvider.java | 50 ----
...onfiguration.server.CayenneServerModuleProvider | 20 --
.../event/CayenneJGroupsModuleProviderTest.java | 36 ---
.../org/apache/cayenne/event/JGroupsModuleIT.java | 58 ----
.../cayenne/event/JavaGroupsBridgeFactoryTest.java | 84 ------
.../event/JavaGroupsBridgeProviderTest.java | 110 --------
cayenne-jms/pom.xml | 81 ------
.../java/org/apache/cayenne/event/JMSBridge.java | 280 -------------------
.../org/apache/cayenne/event/JMSBridgeFactory.java | 39 ---
.../apache/cayenne/event/JMSBridgeProvider.java | 50 ----
.../java/org/apache/cayenne/event/JMSModule.java | 54 ----
.../cayenne/event/JMSServerModuleProvider.java | 48 ----
...onfiguration.server.CayenneServerModuleProvider | 20 --
.../event/CayenneJMSModuleProviderTest.java | 36 ---
.../apache/cayenne/event/JMSBridgeFactoryTest.java | 77 ------
.../cayenne/event/JMSBridgeProviderTest.java | 99 -------
.../java/org/apache/cayenne/event/JMSModuleIT.java | 58 ----
cayenne-xmpp/pom.xml | 86 ------
.../java/org/apache/cayenne/event/XMPPBridge.java | 308 ---------------------
.../apache/cayenne/event/XMPPBridgeFactory.java | 41 ---
.../apache/cayenne/event/XMPPBridgeProvider.java | 50 ----
.../java/org/apache/cayenne/event/XMPPModule.java | 71 -----
.../cayenne/event/XMPPServerModuleProvider.java | 48 ----
...onfiguration.server.CayenneServerModuleProvider | 20 --
.../event/CayenneXMPPModuleProviderTest.java | 36 ---
.../cayenne/event/XMPPBridgeFactoryTest.java | 72 -----
.../cayenne/event/XMPPBridgeProviderTest.java | 118 --------
.../org/apache/cayenne/event/XMPPBridgeTest.java | 54 ----
.../org/apache/cayenne/event/XMPPModuleIT.java | 58 ----
pom.xml | 3 -
39 files changed, 2666 deletions(-)
diff --git a/assembly/pom.xml b/assembly/pom.xml
index eae6335cf..a2d48216d 100644
--- a/assembly/pom.xml
+++ b/assembly/pom.xml
@@ -106,24 +106,6 @@
<version>${project.version}</version>
</dependency>
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-jgroups</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-jms</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-xmpp</artifactId>
- <version>${project.version}</version>
- </dependency>
-
<dependency>
<groupId>org.apache.cayenne</groupId>
<artifactId>cayenne-velocity</artifactId>
diff --git a/assembly/src/main/resources/assemblies/generic/assembly-generic.xml b/assembly/src/main/resources/assemblies/generic/assembly-generic.xml
index 5d9b2b7e8..126e019a3 100644
--- a/assembly/src/main/resources/assemblies/generic/assembly-generic.xml
+++ b/assembly/src/main/resources/assemblies/generic/assembly-generic.xml
@@ -82,9 +82,6 @@
<include>org.apache.cayenne:cayenne-server</include>
<include>org.apache.cayenne:cayenne-velocity</include>
<include>org.apache.cayenne:cayenne-web</include>
- <include>org.apache.cayenne:cayenne-jgroups</include>
- <include>org.apache.cayenne:cayenne-jms</include>
- <include>org.apache.cayenne:cayenne-xmpp</include>
</includes>
</dependencySet>
<dependencySet>
diff --git a/assembly/src/main/resources/assemblies/mac/assembly-mac.xml b/assembly/src/main/resources/assemblies/mac/assembly-mac.xml
index 149d2d09b..047861d71 100644
--- a/assembly/src/main/resources/assemblies/mac/assembly-mac.xml
+++ b/assembly/src/main/resources/assemblies/mac/assembly-mac.xml
@@ -80,9 +80,6 @@
<include>org.apache.cayenne:cayenne-server</include>
<include>org.apache.cayenne:cayenne-velocity</include>
<include>org.apache.cayenne:cayenne-web</include>
- <include>org.apache.cayenne:cayenne-jgroups</include>
- <include>org.apache.cayenne:cayenne-jms</include>
- <include>org.apache.cayenne:cayenne-xmpp</include>
</includes>
</dependencySet>
<dependencySet>
diff --git a/assembly/src/main/resources/assemblies/windows/assembly-windows.xml b/assembly/src/main/resources/assemblies/windows/assembly-windows.xml
index f175c370b..460ba7500 100644
--- a/assembly/src/main/resources/assemblies/windows/assembly-windows.xml
+++ b/assembly/src/main/resources/assemblies/windows/assembly-windows.xml
@@ -80,9 +80,6 @@
<include>org.apache.cayenne:cayenne-server</include>
<include>org.apache.cayenne:cayenne-velocity</include>
<include>org.apache.cayenne:cayenne-web</include>
- <include>org.apache.cayenne:cayenne-jgroups</include>
- <include>org.apache.cayenne:cayenne-jms</include>
- <include>org.apache.cayenne:cayenne-xmpp</include>
</includes>
</dependencySet>
<dependencySet>
diff --git a/cayenne-jgroups/pom.xml b/cayenne-jgroups/pom.xml
deleted file mode 100644
index 209076c5b..000000000
--- a/cayenne-jgroups/pom.xml
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ 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
- ~
- ~ https://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.
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<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/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>cayenne-parent</artifactId>
- <groupId>org.apache.cayenne</groupId>
- <version>4.3.M1-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>cayenne-jgroups</artifactId>
- <name>cayenne-jgroups: Cayenne JGroups Event bridge</name>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>jgroups</groupId>
- <artifactId>jgroups-all</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-server</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <!-- Test dependencies -->
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-server</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <!-- This ensures LICENSE and NOTICE inclusion in all jars -->
- <plugin>
- <artifactId>maven-remote-resources-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>process</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
-</project>
\ No newline at end of file
diff --git a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JGroupsModule.java b/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JGroupsModule.java
deleted file mode 100644
index 0f6aff18d..000000000
--- a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JGroupsModule.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.di.Binder;
-import org.apache.cayenne.di.MapBuilder;
-import org.apache.cayenne.di.Module;
-
-/**
- * @since 4.0
- */
-public class JGroupsModule implements Module {
-
- /**
- * A DI container key for the Map<String, String> storing
- * {@link org.apache.cayenne.event.JavaGroupsBridge} properties
- *
- * @since 4.0
- */
- public static final String JAVA_GROUPS_BRIDGE_PROPERTIES_MAP = "cayenne.server.java_group_bridge";
-
- public static void contributeMulticastAddress(Binder binder, String address) {
- contributeProperties(binder).put(JavaGroupsBridge.MCAST_ADDRESS_PROPERTY, address);
- }
-
- public static void contributeMulticastPort(Binder binder, int port) {
- contributeProperties(binder).put(JavaGroupsBridge.MCAST_PORT_PROPERTY, Integer.toString(port));
- }
-
- public static void contributeConfigUrl(Binder binder, String config) {
- contributeProperties(binder).put(JavaGroupsBridge.JGROUPS_CONFIG_URL_PROPERTY, config);
- }
-
- private static MapBuilder<String> contributeProperties(Binder binder) {
- return binder.bindMap(String.class, JAVA_GROUPS_BRIDGE_PROPERTIES_MAP);
- }
-
- @Override
- public void configure(Binder binder) {
- // init properties' defaults
- contributeMulticastAddress(binder, JavaGroupsBridge.MCAST_ADDRESS_DEFAULT);
- contributeMulticastPort(binder, JavaGroupsBridge.MCAST_PORT_DEFAULT_INT);
-
- binder.bind(EventBridge.class).toProvider(JavaGroupsBridgeProvider.class).withoutScope();
- }
-}
diff --git a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JGroupsServerModuleProvider.java b/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JGroupsServerModuleProvider.java
deleted file mode 100644
index 5e29418da..000000000
--- a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JGroupsServerModuleProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.Collection;
-import java.util.Collections;
-
-import org.apache.cayenne.configuration.server.CayenneServerModuleProvider;
-import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.di.Module;
-
-/**
- * @since 4.0
- */
-public class JGroupsServerModuleProvider implements CayenneServerModuleProvider {
-
- @Override
- public Module module() {
- return new JGroupsModule();
- }
-
- @Override
- public Class<? extends Module> moduleType() {
- return JGroupsModule.class;
- }
-
- @Override
- public Collection<Class<? extends Module>> overrides() {
- return Collections.singletonList(ServerModule.class);
- }
-}
diff --git a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridge.java b/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridge.java
deleted file mode 100644
index a3375dd4a..000000000
--- a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridge.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.jgroups.Channel;
-import org.jgroups.JChannel;
-import org.jgroups.Message;
-import org.jgroups.MessageListener;
-import org.jgroups.blocks.PullPushAdapter;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Implementation of EventBridge that passes and receives events via JavaGroups
- * communication software.
- *
- * @since 1.1
- */
-public class JavaGroupsBridge extends EventBridge implements MessageListener {
-
- public static final String MCAST_ADDRESS_DEFAULT = "228.0.0.5";
- public static final int MCAST_PORT_DEFAULT_INT = 22222;
- public static final String MCAST_PORT_DEFAULT = Integer.toString(MCAST_PORT_DEFAULT_INT);
-
- public static final String MCAST_ADDRESS_PROPERTY = "cayenne.JavaGroupsBridge.mcast.address";
- public static final String MCAST_PORT_PROPERTY = "cayenne.JavaGroupsBridge.mcast.port";
-
- /**
- * Defines a property for JavaGroups XML configuration file.
- */
- public static final String JGROUPS_CONFIG_URL_PROPERTY = "javagroupsbridge.config.url";
-
- // TODO: Meaning of "state" in JGroups is not yet clear to me
- protected byte[] state;
-
- protected Channel channel;
- protected PullPushAdapter adapter;
- protected String multicastAddress;
- protected String multicastPort;
- protected String configURL;
-
- /**
- * Creates new instance of JavaGroupsBridge.
- */
- public JavaGroupsBridge(EventSubject localSubject, String externalSubject) {
- super(localSubject, externalSubject);
- }
-
- /**
- * @since 1.2
- */
- public JavaGroupsBridge(Collection<EventSubject> localSubjects, String externalSubject) {
- super(localSubjects, externalSubject);
- }
-
- /**
- * @since 4.0
- */
- public JavaGroupsBridge(Collection<EventSubject> localSubjects, String externalSubject, Map<String, String> properties) {
- super(localSubjects, externalSubject);
-
- // configure properties
- String multicastAddress = properties.get(MCAST_ADDRESS_PROPERTY);
- String multicastPort = properties.get(MCAST_PORT_PROPERTY);
-
- this.configURL = properties.get(JGROUPS_CONFIG_URL_PROPERTY);
- this.multicastAddress = (multicastAddress != null) ? multicastAddress : MCAST_ADDRESS_DEFAULT;
- this.multicastPort = (multicastPort != null) ? multicastPort : MCAST_PORT_DEFAULT;
- }
-
- public String getConfigURL() {
- return configURL;
- }
-
- public void setConfigURL(String configURL) {
- this.configURL = configURL;
- }
-
- public String getMulticastAddress() {
- return multicastAddress;
- }
-
- public void setMulticastAddress(String multicastAddress) {
- this.multicastAddress = multicastAddress;
- }
-
- public String getMulticastPort() {
- return multicastPort;
- }
-
- public void setMulticastPort(String multicastPort) {
- this.multicastPort = multicastPort;
- }
-
- public byte[] getState() {
- return state;
- }
-
- public void setState(byte[] state) {
- this.state = state;
- }
-
- /**
- * Implementation of org.javagroups.MessageListener - a callback method to process
- * incoming messages.
- */
- public void receive(Message message) {
- try {
- CayenneEvent event = messageObjectToEvent((Serializable) message.getObject());
- if (event != null) {
-
- onExternalEvent(event);
- }
- }
- catch (Exception ex) {
- // TODO: Andrus, 2/8/2006 logging... Log4J was removed to make this usable on
- // the client
- }
- }
-
- @Override
- protected void startupExternal() throws Exception {
- // TODO: need to do more research to figure out the best default transport
- // settings
- // to avoid fragmentation, etc.
-
- // if config file is set, use it, otherwise use a default
- // set of properties, trying to configure multicast address and port
- if (configURL != null) {
- channel = new JChannel(configURL);
- }
- else {
- String configString = buildConfigString();
- channel = new JChannel(configString);
- }
-
- // Important - discard messages from self
- channel.setOpt(Channel.LOCAL, Boolean.FALSE);
- channel.connect(externalSubject);
-
- if (receivesExternalEvents()) {
- adapter = new PullPushAdapter(channel, this);
- }
- }
-
- /**
- * Creates JavaGroups configuration String, using preconfigured multicast port and
- * address.
- */
- protected String buildConfigString() {
- if (multicastAddress == null) {
- throw new IllegalStateException("'multcastAddress' is not set");
- }
-
- if (multicastPort == null) {
- throw new IllegalStateException("'multcastPort' is not set");
- }
-
- return "UDP(mcast_addr="
- + multicastAddress
- + ";mcast_port="
- + multicastPort
- + ";ip_ttl=32):"
- + "PING(timeout=3000;num_initial_members=6):"
- + "FD(timeout=3000):"
- + "VERIFY_SUSPECT(timeout=1500):"
- + "pbcast.NAKACK(gc_lag=10;retransmit_timeout=600,1200,2400,4800):"
- + "pbcast.STABLE(desired_avg_gossip=10000):"
- + "FRAG:"
- + "pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;"
- + "shun=true;print_local_addr=false)";
- }
-
- @Override
- protected void shutdownExternal() throws Exception {
- try {
- if (adapter != null) {
- adapter.stop();
- }
-
- if(channel != null) {
- channel.close();
- }
- } finally {
- adapter = null;
- channel = null;
- }
- }
-
- @Override
- protected void sendExternalEvent(CayenneEvent localEvent) throws Exception {
- Message message = new Message(null, null, eventToMessageObject(localEvent));
- channel.send(message);
- }
-
- /**
- * Converts CayenneEvent to a serializable object that will be sent via JMS. Default
- * implementation simply returns the event, but subclasses can customize this
- * behavior.
- */
- protected Serializable eventToMessageObject(CayenneEvent event) throws Exception {
- return event;
- }
-
- /**
- * Converts a Serializable instance to CayenneEvent. Returns null if the object is not
- * supported. Default implementation simply tries to cast the object to CayenneEvent,
- * but subclasses can customize this behavior.
- */
- protected CayenneEvent messageObjectToEvent(Serializable object) throws Exception {
- return (object instanceof CayenneEvent) ? (CayenneEvent) object : null;
- }
-}
diff --git a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridgeFactory.java b/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridgeFactory.java
deleted file mode 100644
index 79d77b28e..000000000
--- a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridgeFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.Collection;
-import java.util.Map;
-
-/**
- * Factory to create JavaGroupsBridge instances. If JavaGroups library is not installed
- * this factory will return a noop EventBridge as a failover mechanism.
- * <p/>
- * For further information about JavaGroups consult the <a href="http://www.jgroups.org/">documentation</a>.
- *
- * @since 1.1
- */
-public class JavaGroupsBridgeFactory implements EventBridgeFactory {
-
- /**
- * Creates a JavaGroupsBridge instance. Since JavaGroups is not shipped with Cayenne
- * and should be installed separately, a common misconfiguration problem may be the
- * absence of JavaGroups jar file. This factory returns a dummy noop EventBridge, if
- * this is the case. This would allow the application to continue to run, but without
- * remote notifications.
- */
- public EventBridge createEventBridge(
- Collection<EventSubject> localSubjects,
- String externalSubject,
- Map<String, String> properties) {
- return new JavaGroupsBridge(localSubjects, externalSubject, properties);
- }
-
-}
diff --git a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridgeProvider.java b/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridgeProvider.java
deleted file mode 100644
index cd9a81346..000000000
--- a/cayenne-jgroups/src/main/java/org/apache/cayenne/event/JavaGroupsBridgeProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.access.DataDomain;
-import org.apache.cayenne.access.DataRowStore;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.di.DIRuntimeException;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class JavaGroupsBridgeProvider implements Provider<EventBridge> {
-
- @Inject
- protected DataDomain dataDomain;
-
- @Inject(JGroupsModule.JAVA_GROUPS_BRIDGE_PROPERTIES_MAP)
- Map<String, String> properties;
-
- @Override
- public EventBridge get() throws DIRuntimeException {
- EventSubject snapshotEventSubject = EventSubject.getSubject(DataRowStore.class, dataDomain.getName());
-
- return new JavaGroupsBridge(
- Collections.singleton(snapshotEventSubject),
- EventBridge.convertToExternalSubject(snapshotEventSubject),
- properties);
- }
-
-}
diff --git a/cayenne-jgroups/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider b/cayenne-jgroups/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider
deleted file mode 100644
index 177effb8c..000000000
--- a/cayenne-jgroups/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider
+++ /dev/null
@@ -1,20 +0,0 @@
-##################################################################
-# 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
-#
-# https://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.
-##################################################################
-
-org.apache.cayenne.event.JGroupsServerModuleProvider
\ No newline at end of file
diff --git a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/CayenneJGroupsModuleProviderTest.java b/cayenne-jgroups/src/test/java/org/apache/cayenne/event/CayenneJGroupsModuleProviderTest.java
deleted file mode 100644
index 62ab9e352..000000000
--- a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/CayenneJGroupsModuleProviderTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.server.CayenneServerModuleProvider;
-import org.apache.cayenne.unit.util.ModuleProviderChecker;
-import org.junit.Test;
-
-/**
- * @since 4.0
- */
-public class CayenneJGroupsModuleProviderTest {
-
- @Test
- public void testAutoLoadable() {
- ModuleProviderChecker.testProviderPresent(JGroupsServerModuleProvider.class, CayenneServerModuleProvider.class);
- }
-
-}
diff --git a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JGroupsModuleIT.java b/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JGroupsModuleIT.java
deleted file mode 100644
index d23becf7f..000000000
--- a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JGroupsModuleIT.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.server.ServerModule;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.Module;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertThat;
-
-/**
- * @since 4.0
- */
-public class JGroupsModuleIT {
-
- @Test
- public void testModule() {
-
- Module configModule = new Module() {
- public void configure(Binder binder) {
- ServerModule.contributeProperties(binder).put(Constants.SERVER_DOMAIN_NAME_PROPERTY, "test");
- }
- };
-
- Injector injector = DIBootstrap.createInjector(new ServerModule(), new JGroupsModule(), configModule);
-
- EventBridge bridge = injector.getInstance(EventBridge.class);
- assertThat(bridge, instanceOf(JavaGroupsBridge.class));
-
- EventBridge bridge2 = injector.getInstance(EventBridge.class);
- assertThat(bridge2, instanceOf(JavaGroupsBridge.class));
- assertNotSame(bridge, bridge2);
- }
-
-}
diff --git a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JavaGroupsBridgeFactoryTest.java b/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JavaGroupsBridgeFactoryTest.java
deleted file mode 100644
index 2ea6da913..000000000
--- a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JavaGroupsBridgeFactoryTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.junit.Test;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- */
-public class JavaGroupsBridgeFactoryTest {
-
- protected Collection<EventSubject> subjects = Collections.singleton(new EventSubject("test"));
- protected String externalSubject = "subject";
-
- @Test
- public void testCreateEventBridge() throws Exception {
- EventBridge bridge = new JavaGroupsBridgeFactory().createEventBridge(
- subjects,
- externalSubject,
- Collections.<String, String>emptyMap());
-
- assertNotNull(bridge);
- assertTrue(bridge instanceof JavaGroupsBridge);
- assertEquals(subjects, bridge.getLocalSubjects());
- assertEquals(externalSubject, bridge.getExternalSubject());
- }
-
- @Test
- public void testUseProperties() throws Exception {
- JavaGroupsBridgeFactory bridgeFactory = new JavaGroupsBridgeFactory();
-
- Map<String, String> properties = new HashMap<>();
- properties.put(JavaGroupsBridge.MCAST_ADDRESS_PROPERTY, JavaGroupsBridgeProviderTest.MCAST_ADDRESS_TEST);
- properties.put(JavaGroupsBridge.MCAST_PORT_PROPERTY, JavaGroupsBridgeProviderTest.MCAST_PORT_TEST);
- properties.put(JavaGroupsBridge.JGROUPS_CONFIG_URL_PROPERTY, JavaGroupsBridgeProviderTest.CONFIG_URL_TEST);
-
- JavaGroupsBridge bridge = (JavaGroupsBridge) bridgeFactory.createEventBridge(
- subjects,
- externalSubject,
- properties);
-
- assertEquals(bridge.getMulticastAddress(), JavaGroupsBridgeProviderTest.MCAST_ADDRESS_TEST);
- assertEquals(bridge.getMulticastPort(), JavaGroupsBridgeProviderTest.MCAST_PORT_TEST);
- assertEquals(bridge.getConfigURL(), JavaGroupsBridgeProviderTest.CONFIG_URL_TEST);
- }
-
- @Test
- public void testUseDefaultProperties() throws Exception {
- JavaGroupsBridgeFactory bridgeFactory = new JavaGroupsBridgeFactory();
- JavaGroupsBridge bridge = (JavaGroupsBridge) bridgeFactory.createEventBridge(
- subjects,
- externalSubject,
- Collections.<String, String>emptyMap());
-
- assertEquals(bridge.getMulticastAddress(), JavaGroupsBridge.MCAST_ADDRESS_DEFAULT);
- assertEquals(bridge.getMulticastPort(), JavaGroupsBridge.MCAST_PORT_DEFAULT);
- assertEquals(bridge.getConfigURL(), null);
- }
-}
diff --git a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JavaGroupsBridgeProviderTest.java b/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JavaGroupsBridgeProviderTest.java
deleted file mode 100644
index 9c2b94c08..000000000
--- a/cayenne-jgroups/src/test/java/org/apache/cayenne/event/JavaGroupsBridgeProviderTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.access.DataDomain;
-import org.apache.cayenne.access.flush.DataDomainFlushActionFactory;
-import org.apache.cayenne.access.flush.DefaultDataDomainFlushActionFactory;
-import org.apache.cayenne.access.flush.operation.DefaultDbRowOpSorter;
-import org.apache.cayenne.access.flush.operation.DbRowOpSorter;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.DefaultRuntimeProperties;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.ClassLoaderManager;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
-import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.log.Slf4jJdbcEventLogger;
-import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.tx.DefaultTransactionFactory;
-import org.apache.cayenne.tx.DefaultTransactionManager;
-import org.apache.cayenne.tx.TransactionFactory;
-import org.apache.cayenne.tx.TransactionManager;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-public class JavaGroupsBridgeProviderTest {
-
- private static final DataDomain DOMAIN = new DataDomain("test");
- private static final EventManager EVENT_MANAGER = new DefaultEventManager();
- protected static final String MCAST_ADDRESS_TEST = "192.168.0.0";
- protected static final String MCAST_PORT_TEST = "1521";
- protected static final String CONFIG_URL_TEST = "somehost.com";
-
- @Test
- public void testGetJavaGroupsBridge() throws Exception {
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new JGroupsModule());
- EventBridge bridge = injector.getInstance(EventBridge.class);
-
- assertNotNull(bridge);
- assertTrue(bridge instanceof JavaGroupsBridge);
- }
-
- @Test
- public void testUseProperties() throws Exception {
- Module module = binder -> {
- JGroupsModule.contributeMulticastAddress(binder, MCAST_ADDRESS_TEST);
- JGroupsModule.contributeMulticastPort(binder, Integer.parseInt(MCAST_PORT_TEST));
- JGroupsModule.contributeConfigUrl(binder, CONFIG_URL_TEST);
- };
-
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new JGroupsModule(), module);
- JavaGroupsBridge bridge = (JavaGroupsBridge) injector.getInstance(EventBridge.class);
-
- assertEquals(MCAST_ADDRESS_TEST, bridge.getMulticastAddress());
- assertEquals(MCAST_PORT_TEST, bridge.getMulticastPort());
- assertEquals(CONFIG_URL_TEST, bridge.getConfigURL());
- }
-
- @Test
- public void testUseDefaultProperties() throws Exception {
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new JGroupsModule());
- JavaGroupsBridge bridge = (JavaGroupsBridge) injector.getInstance(EventBridge.class);
-
- assertEquals(JavaGroupsBridge.MCAST_ADDRESS_DEFAULT, bridge.getMulticastAddress());
- assertEquals(JavaGroupsBridge.MCAST_PORT_DEFAULT, bridge.getMulticastPort());
- assertNull(bridge.getConfigURL());
- }
-
- static class DefaultBindings implements Module {
- @Override
- public void configure(Binder binder) {
- binder.bindMap(String.class, Constants.PROPERTIES_MAP);
- binder.bind(DataDomain.class).toInstance(DOMAIN);
- binder.bind(EventManager.class).toInstance(EVENT_MANAGER);
- binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
- binder.bind(TransactionFactory.class).to(DefaultTransactionFactory.class);
- binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
- binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
- binder.bind(DataDomainFlushActionFactory.class).to(DefaultDataDomainFlushActionFactory.class);
- binder.bind(DbRowOpSorter.class).to(DefaultDbRowOpSorter.class);
- binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
- binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
- }
- }
-}
diff --git a/cayenne-jms/pom.xml b/cayenne-jms/pom.xml
deleted file mode 100644
index 6a14523f7..000000000
--- a/cayenne-jms/pom.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ 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
- ~
- ~ https://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.
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<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/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>cayenne-parent</artifactId>
- <groupId>org.apache.cayenne</groupId>
- <version>4.3.M1-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>cayenne-jms</artifactId>
- <name>cayenne-jms: Cayenne JMS Event bridge</name>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-server</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <!-- Test dependencies -->
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-server</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <!-- This ensures LICENSE and NOTICE inclusion in all jars -->
- <plugin>
- <artifactId>maven-remote-resources-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>process</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridge.java b/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridge.java
deleted file mode 100644
index 256d764f3..000000000
--- a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridge.java
+++ /dev/null
@@ -1,280 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.util.IDUtil;
-
-import javax.jms.Message;
-import javax.jms.MessageFormatException;
-import javax.jms.MessageListener;
-import javax.jms.ObjectMessage;
-import javax.jms.Session;
-import javax.jms.Topic;
-import javax.jms.TopicConnection;
-import javax.jms.TopicConnectionFactory;
-import javax.jms.TopicPublisher;
-import javax.jms.TopicSession;
-import javax.jms.TopicSubscriber;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NameNotFoundException;
-import javax.naming.NamingException;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Map;
-
-/**
- * Implementation of EventBridge that passes and receives events via JMS (Java Messaging
- * Service). JMSBridge uses "publish/subscribe" model for communication with external
- * agents.
- *
- * @since 1.1
- */
-public class JMSBridge extends EventBridge implements MessageListener {
-
- // this is an OpenJMS default for the factory name. Likely it won't work with
- // anything else
- public static final String TOPIC_CONNECTION_FACTORY_DEFAULT = "JmsTopicConnectionFactory";
-
- public static final String TOPIC_CONNECTION_FACTORY_PROPERTY = "cayenne.JMSBridge.topic.connection.factory";
-
- static final String VM_ID = new String(IDUtil.pseudoUniqueByteSequence16());
- static final String VM_ID_PROPERTY = "VM_ID";
-
- protected String topicConnectionFactoryName;
-
- protected TopicConnection sendConnection;
- protected TopicSession sendSession;
- protected TopicConnection receivedConnection;
- protected TopicPublisher publisher;
- protected TopicSubscriber subscriber;
-
- public JMSBridge(EventSubject localSubject, String externalSubject) {
- super(localSubject, externalSubject);
- }
-
- /**
- * @since 1.2
- */
- public JMSBridge(Collection<EventSubject> localSubjects, String externalSubject) {
- super(localSubjects, externalSubject);
- }
-
- /**
- * @since 4.0
- */
- public JMSBridge(Collection<EventSubject> localSubjects, String externalSubject, Map<String, String> properties) {
- super(localSubjects, externalSubject);
-
- // configure properties
- String topicConnectionFactory = properties
- .get(TOPIC_CONNECTION_FACTORY_PROPERTY);
-
- this.topicConnectionFactoryName = (topicConnectionFactory != null)
- ? topicConnectionFactory
- : TOPIC_CONNECTION_FACTORY_DEFAULT;
- }
-
- /**
- * JMS MessageListener implementation. Injects received events to the EventManager
- * local event queue.
- */
- public void onMessage(Message message) {
-
- try {
- Object vmID = message.getObjectProperty(JMSBridge.VM_ID_PROPERTY);
- if (JMSBridge.VM_ID.equals(vmID)) {
- return;
- }
-
- if (!(message instanceof ObjectMessage)) {
- return;
- }
-
- ObjectMessage objectMessage = (ObjectMessage) message;
- CayenneEvent event = messageObjectToEvent(objectMessage.getObject());
- if (event != null) {
- onExternalEvent(event);
- }
-
- }
- catch (MessageFormatException mfex) {
- // TODO: Andrus, 2/8/2006 logging... Log4J was removed to make this usable on
- // the client
- }
- catch (Exception ex) {
- // TODO: Andrus, 2/8/2006 logging... Log4J was removed to make this usable on
- // the client
- }
- }
-
- /**
- * @return Name of javax.jms.TopicConnectionFactory accessible via JNDI.
- */
- public String getTopicConnectionFactoryName() {
- return topicConnectionFactoryName;
- }
-
- public void setTopicConnectionFactoryName(String name) {
- this.topicConnectionFactoryName = name;
- }
-
- /**
- * Starts up JMS machinery for "publish/subscribe" model.
- */
- @Override
- protected void startupExternal() throws Exception {
- Context jndiContext = new InitialContext();
- TopicConnectionFactory connectionFactory = (TopicConnectionFactory) jndiContext
- .lookup(topicConnectionFactoryName);
-
- Topic topic = null;
-
- try {
- topic = (Topic) jndiContext.lookup(externalSubject);
- }
- catch (NameNotFoundException ex) {
- // can't find topic, try to create it
- topic = topicNotFound(jndiContext, ex);
-
- if (topic == null) {
- throw ex;
- }
- }
-
- // config publisher
- if (receivesLocalEvents()) {
- this.sendConnection = connectionFactory.createTopicConnection();
- this.sendSession = sendConnection.createTopicSession(
- false,
- Session.AUTO_ACKNOWLEDGE);
- this.publisher = sendSession.createPublisher(topic);
- }
-
- // config subscriber
- if (receivesExternalEvents()) {
- this.receivedConnection = connectionFactory.createTopicConnection();
- this.subscriber = receivedConnection.createTopicSession(
- false,
- Session.AUTO_ACKNOWLEDGE).createSubscriber(topic);
- this.subscriber.setMessageListener(this);
- this.receivedConnection.start();
- }
- }
-
- /**
- * Attempts to create missing Topic. Since Topic creation is JMS-implementation
- * specific, this task is left to subclasses. Current implementation simply rethrows
- * the exception.
- */
- protected Topic topicNotFound(Context jndiContext, NamingException ex)
- throws Exception {
- throw ex;
- }
-
- /**
- * Closes all resources used to communicate via JMS.
- */
- @Override
- protected void shutdownExternal() throws Exception {
- Exception lastException = null;
-
- if (publisher != null) {
- try {
- publisher.close();
- }
- catch (Exception ex) {
- lastException = ex;
- }
- }
-
- if (subscriber != null) {
- try {
- subscriber.close();
- }
- catch (Exception ex) {
- lastException = ex;
- }
- }
-
- if (receivedConnection != null) {
- try {
- receivedConnection.close();
- }
- catch (Exception ex) {
- lastException = ex;
- }
- }
-
- if (sendSession != null) {
- try {
- sendSession.close();
- }
- catch (Exception ex) {
- lastException = ex;
- }
- }
-
- if (sendConnection != null) {
- try {
- sendConnection.close();
- }
- catch (Exception ex) {
- lastException = ex;
- }
- }
-
- publisher = null;
- subscriber = null;
- receivedConnection = null;
- sendConnection = null;
- sendSession = null;
-
- if (lastException != null) {
- throw lastException;
- }
- }
-
- @Override
- protected void sendExternalEvent(CayenneEvent localEvent) throws Exception {
- ObjectMessage message = sendSession
- .createObjectMessage(eventToMessageObject(localEvent));
- message.setObjectProperty(JMSBridge.VM_ID_PROPERTY, JMSBridge.VM_ID);
- publisher.publish(message);
- }
-
- /**
- * Converts CayenneEvent to a serializable object that will be sent via JMS. Default
- * implementation simply returns the event, but subclasses can customize this
- * behavior.
- */
- protected Serializable eventToMessageObject(CayenneEvent event) throws Exception {
- return event;
- }
-
- /**
- * Converts a Serializable instance to CayenneEvent. Returns null if the object is not
- * supported. Default implementation simply tries to cast the object to CayenneEvent,
- * but subclasses can customize this behavior.
- */
- protected CayenneEvent messageObjectToEvent(Serializable object) throws Exception {
- return (object instanceof CayenneEvent) ? (CayenneEvent) object : null;
- }
-}
diff --git a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridgeFactory.java b/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridgeFactory.java
deleted file mode 100644
index 28d3d008f..000000000
--- a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridgeFactory.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.Collection;
-import java.util.Map;
-
-/**
- * Factory to create JMSBridge instances.
- *
- * @since 1.1
- */
-public class JMSBridgeFactory implements EventBridgeFactory {
-
- /**
- * @since 1.2
- */
- public EventBridge createEventBridge(Collection<EventSubject> localSubjects, String externalSubject, Map<String, String> properties) {
- return new JMSBridge(localSubjects, externalSubject, properties);
- }
-
-}
diff --git a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridgeProvider.java b/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridgeProvider.java
deleted file mode 100644
index 892337385..000000000
--- a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSBridgeProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.access.DataDomain;
-import org.apache.cayenne.access.DataRowStore;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.di.DIRuntimeException;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class JMSBridgeProvider implements Provider<EventBridge> {
-
- @Inject
- protected DataDomain dataDomain;
-
- @Inject(JMSModule.JMS_BRIDGE_PROPERTIES_MAP)
- Map<String, String> properties;
-
- @Override
- public EventBridge get() throws DIRuntimeException {
- EventSubject snapshotEventSubject = EventSubject.getSubject(DataRowStore.class, dataDomain.getName());
-
- return new JMSBridge(
- Collections.singleton(snapshotEventSubject),
- EventBridge.convertToExternalSubject(snapshotEventSubject),
- properties);
- }
-
-}
diff --git a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSModule.java b/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSModule.java
deleted file mode 100644
index 0155d3d36..000000000
--- a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSModule.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.di.Binder;
-import org.apache.cayenne.di.MapBuilder;
-import org.apache.cayenne.di.Module;
-
-/**
- * @since 4.0
- */
-public class JMSModule implements Module {
-
- /**
- * A DI container key for the Map<String, String> storing
- * {@link org.apache.cayenne.event.JMSBridge} properties
- *
- * @since 4.0
- */
- public static final String JMS_BRIDGE_PROPERTIES_MAP = "cayenne.server.jms_bridge";
-
- public static void contributeTopicConnectionFactory(Binder binder, String factory) {
- contributeProperties(binder).put(JMSBridge.TOPIC_CONNECTION_FACTORY_PROPERTY, factory);
- }
-
- private static MapBuilder<String> contributeProperties(Binder binder) {
- return binder.bindMap(String.class, JMS_BRIDGE_PROPERTIES_MAP);
- }
-
- @Override
- public void configure(Binder binder) {
- // init properties' defaults
- contributeTopicConnectionFactory(binder, JMSBridge.TOPIC_CONNECTION_FACTORY_DEFAULT);
-
- binder.bind(EventBridge.class).toProvider(JMSBridgeProvider.class).withoutScope();
- }
-}
diff --git a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSServerModuleProvider.java b/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSServerModuleProvider.java
deleted file mode 100644
index ec65ed14a..000000000
--- a/cayenne-jms/src/main/java/org/apache/cayenne/event/JMSServerModuleProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.Collection;
-import java.util.Collections;
-
-import org.apache.cayenne.configuration.server.CayenneServerModuleProvider;
-import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.di.Module;
-
-/**
- * @since 4.0
- */
-public class JMSServerModuleProvider implements CayenneServerModuleProvider {
-
- @Override
- public Module module() {
- return new JMSModule();
- }
-
- @Override
- public Class<? extends Module> moduleType() {
- return JMSModule.class;
- }
-
- @Override
- public Collection<Class<? extends Module>> overrides() {
- return Collections.singletonList(ServerModule.class);
- }
-}
\ No newline at end of file
diff --git a/cayenne-jms/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider b/cayenne-jms/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider
deleted file mode 100644
index e7ea168f4..000000000
--- a/cayenne-jms/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider
+++ /dev/null
@@ -1,20 +0,0 @@
-##################################################################
-# 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
-#
-# https://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.
-##################################################################
-
-org.apache.cayenne.event.JMSServerModuleProvider
\ No newline at end of file
diff --git a/cayenne-jms/src/test/java/org/apache/cayenne/event/CayenneJMSModuleProviderTest.java b/cayenne-jms/src/test/java/org/apache/cayenne/event/CayenneJMSModuleProviderTest.java
deleted file mode 100644
index affc09a5e..000000000
--- a/cayenne-jms/src/test/java/org/apache/cayenne/event/CayenneJMSModuleProviderTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.server.CayenneServerModuleProvider;
-import org.apache.cayenne.unit.util.ModuleProviderChecker;
-import org.junit.Test;
-
-/**
- * @since 4.0
- */
-public class CayenneJMSModuleProviderTest {
-
- @Test
- public void testAutoLoadable() {
- ModuleProviderChecker.testProviderPresent(JMSServerModuleProvider.class, CayenneServerModuleProvider.class);
- }
-
-}
diff --git a/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSBridgeFactoryTest.java b/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSBridgeFactoryTest.java
deleted file mode 100644
index b3a1f927d..000000000
--- a/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSBridgeFactoryTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.junit.Test;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-public class JMSBridgeFactoryTest {
-
- protected Collection<EventSubject> subjects = Collections.singleton(new EventSubject("test"));
- protected String externalSubject = "subject";
-
- @Test
- public void testCreateEventBridge() throws Exception {
- EventBridge bridge = new JMSBridgeFactory().createEventBridge(
- subjects,
- externalSubject,
- Collections.<String, String>emptyMap());
-
- assertNotNull(bridge);
- assertTrue(bridge instanceof JMSBridge);
- assertEquals(subjects, bridge.getLocalSubjects());
- assertEquals(externalSubject, bridge.getExternalSubject());
- }
-
- @Test
- public void testUseProperties() throws Exception {
- JMSBridgeFactory bridgeFactory = new JMSBridgeFactory();
-
- Map<String, String> properties = new HashMap<>();
- properties.put(JMSBridge.TOPIC_CONNECTION_FACTORY_PROPERTY, JMSBridgeProviderTest.TOPIC_CONNECTION_FACTORY_TEST);
-
- JMSBridge bridge = (JMSBridge) bridgeFactory.createEventBridge(
- subjects,
- externalSubject,
- properties);
-
- assertEquals(bridge.getTopicConnectionFactoryName(), JMSBridgeProviderTest.TOPIC_CONNECTION_FACTORY_TEST);
- }
-
- @Test
- public void testUseDefaultProperties() throws Exception {
- JMSBridgeFactory bridgeFactory = new JMSBridgeFactory();
- JMSBridge bridge = (JMSBridge) bridgeFactory.createEventBridge(
- subjects,
- externalSubject,
- Collections.<String, String>emptyMap());
-
- assertEquals(bridge.getTopicConnectionFactoryName(), JMSBridge.TOPIC_CONNECTION_FACTORY_DEFAULT);
- }
-
-}
diff --git a/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSBridgeProviderTest.java b/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSBridgeProviderTest.java
deleted file mode 100644
index f8f9c5a20..000000000
--- a/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSBridgeProviderTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.access.DataDomain;
-import org.apache.cayenne.access.flush.DataDomainFlushActionFactory;
-import org.apache.cayenne.access.flush.DefaultDataDomainFlushActionFactory;
-import org.apache.cayenne.access.flush.operation.DefaultDbRowOpSorter;
-import org.apache.cayenne.access.flush.operation.DbRowOpSorter;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.DefaultRuntimeProperties;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.ClassLoaderManager;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
-import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.log.Slf4jJdbcEventLogger;
-import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.tx.DefaultTransactionFactory;
-import org.apache.cayenne.tx.DefaultTransactionManager;
-import org.apache.cayenne.tx.TransactionFactory;
-import org.apache.cayenne.tx.TransactionManager;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-public class JMSBridgeProviderTest {
-
- private static final DataDomain DOMAIN = new DataDomain("test");
- private static final EventManager EVENT_MANAGER = new DefaultEventManager();
- protected static final String TOPIC_CONNECTION_FACTORY_TEST = "SomeTopicConnectionFactory";
-
- @Test
- public void testGetJMSBridge() throws Exception {
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new JMSModule());
- EventBridge bridge = injector.getInstance(EventBridge.class);
-
- assertNotNull(bridge);
- assertTrue(bridge instanceof JMSBridge);
- }
-
- @Test
- public void testUseProperties() {
- Module module = binder -> JMSModule.contributeTopicConnectionFactory(binder, TOPIC_CONNECTION_FACTORY_TEST);
-
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new JMSModule(), module);
- JMSBridge bridge = (JMSBridge) injector.getInstance(EventBridge.class);
-
- assertEquals(TOPIC_CONNECTION_FACTORY_TEST, bridge.getTopicConnectionFactoryName());
- }
-
- @Test
- public void testUseDefaultProperties() throws Exception {
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new JMSModule());
- JMSBridge bridge = (JMSBridge) injector.getInstance(EventBridge.class);
-
- assertEquals(JMSBridge.TOPIC_CONNECTION_FACTORY_DEFAULT, bridge.getTopicConnectionFactoryName());
- }
-
- static class DefaultBindings implements Module {
- @Override
- public void configure(Binder binder) {
- binder.bindMap(String.class, Constants.PROPERTIES_MAP);
- binder.bind(DataDomain.class).toInstance(DOMAIN);
- binder.bind(EventManager.class).toInstance(EVENT_MANAGER);
- binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
- binder.bind(TransactionFactory.class).to(DefaultTransactionFactory.class);
- binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
- binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
- binder.bind(DataDomainFlushActionFactory.class).to(DefaultDataDomainFlushActionFactory.class);
- binder.bind(DbRowOpSorter.class).to(DefaultDbRowOpSorter.class);
- binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
- binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
- }
- }
-}
diff --git a/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSModuleIT.java b/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSModuleIT.java
deleted file mode 100644
index 2253deb12..000000000
--- a/cayenne-jms/src/test/java/org/apache/cayenne/event/JMSModuleIT.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.server.ServerModule;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.Module;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertThat;
-
-/**
- * @since 4.0
- */
-public class JMSModuleIT {
-
- @Test
- public void testModule() {
-
- Module configModule = new Module() {
- public void configure(Binder binder) {
- ServerModule.contributeProperties(binder).put(Constants.SERVER_DOMAIN_NAME_PROPERTY, "test");
- }
- };
-
- Injector injector = DIBootstrap.createInjector(new ServerModule(), new JMSModule(), configModule);
-
- EventBridge bridge = injector.getInstance(EventBridge.class);
- assertThat(bridge, instanceOf(JMSBridge.class));
-
- EventBridge bridge2 = injector.getInstance(EventBridge.class);
- assertThat(bridge2, instanceOf(JMSBridge.class));
- assertNotSame(bridge, bridge2);
- }
-
-}
diff --git a/cayenne-xmpp/pom.xml b/cayenne-xmpp/pom.xml
deleted file mode 100644
index dc55a4857..000000000
--- a/cayenne-xmpp/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ~ 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
- ~
- ~ https://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.
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-
-<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/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>cayenne-parent</artifactId>
- <groupId>org.apache.cayenne</groupId>
- <version>4.3.M1-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>cayenne-xmpp</artifactId>
- <name>cayenne-xmpp: Cayenne XMPP Event bridge</name>
- <packaging>jar</packaging>
-
- <dependencies>
- <dependency>
- <groupId>jivesoftware</groupId>
- <artifactId>smack</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>jivesoftware</groupId>
- <artifactId>smackx</artifactId>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-server</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <!-- Test dependencies -->
- <dependency>
- <groupId>org.apache.cayenne</groupId>
- <artifactId>cayenne-server</artifactId>
- <version>${project.version}</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <!-- This ensures LICENSE and NOTICE inclusion in all jars -->
- <plugin>
- <artifactId>maven-remote-resources-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>process</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridge.java b/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridge.java
deleted file mode 100644
index e2e9da79f..000000000
--- a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridge.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.CayenneRuntimeException;
-import org.apache.cayenne.util.Util;
-import org.jivesoftware.smack.GroupChat;
-import org.jivesoftware.smack.PacketListener;
-import org.jivesoftware.smack.SSLXMPPConnection;
-import org.jivesoftware.smack.XMPPConnection;
-import org.jivesoftware.smack.XMPPException;
-import org.jivesoftware.smack.packet.Message;
-import org.jivesoftware.smack.packet.Packet;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.Base64;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * An EventBridge implementation based on XMPP protocol and Smack XMPP client library.
- * What's good about XMPP (Extensible Messaging and Presence Protocol, an IETF standard
- * protocol that grew up from Jabber IM) is that generally it has fewer or no deployment
- * limitations (unlike JMS and JGroups that are generally a good solution for local
- * controlled networks). Also it provides lots of additional information for free, such as
- * presence, and much more.
- * <p>
- * This implementation is based on Smack XMPP client library from JiveSoftware.
- * </p>
- *
- * @since 1.2
- */
-public class XMPPBridge extends EventBridge {
-
- public static final String XMPP_HOST_PROPERTY = "cayenne.XMPPBridge.xmppHost";
-
- /**
- * An optional property, port 5222 is used as default XMPP port.
- */
- public static final String XMPP_PORT_PROPERTY = "cayenne.XMPPBridge.xmppPort";
-
- /**
- * An optional property, "conference" is used as default chat service.
- */
- public static final String XMPP_CHAT_SERVICE_PROPERTY = "cayenne.XMPPBridge.xmppChatService";
-
- public static final String XMPP_SECURE_CONNECTION_PROPERTY = "cayenne.XMPPBridge.xmppSecure";
- public static final String XMPP_LOGIN_PROPERTY = "cayenne.XMPPBridge.xmppLogin";
- public static final String XMPP_PASSWORD_PROPERTY = "cayenne.XMPPBridge.xmppPassword";
-
- static final String DEFAULT_CHAT_SERVICE = "conference";
- static final int DEFAULT_XMPP_PORT = 5222;
- static final int DEFAULT_XMPP_SECURE_PORT = 5223;
-
- protected boolean secureConnection;
- protected String loginId;
- protected String password;
- protected String xmppHost;
- protected int xmppPort;
- protected String chatService;
- protected String sessionHandle;
-
- protected XMPPConnection connection;
- protected GroupChat groupChat;
- protected boolean connected;
-
- /**
- * Creates an XMPPBridge. External subject will be used as the chat group name.
- */
- public XMPPBridge(EventSubject localSubject, String externalSubject) {
- this(Collections.singleton(localSubject), externalSubject);
- }
-
- /**
- * Creates an XMPPBridge. External subject will be used as the chat group name.
- */
- public XMPPBridge(Collection<EventSubject> localSubjects, String externalSubject) {
- super(localSubjects, externalSubject);
-
- // generate a unique session handle... users can override it to use a specific
- // handle...
- this.sessionHandle = "cayenne-xmpp-" + System.currentTimeMillis();
- }
-
- public XMPPBridge(Collection<EventSubject> localSubjects, String externalSubject, Map<String, String> properties) {
- this(localSubjects, externalSubject);
-
- this.chatService = properties.get(XMPP_CHAT_SERVICE_PROPERTY);
- this.xmppHost = properties.get(XMPP_HOST_PROPERTY);
-
- this.loginId = properties.get(XMPP_LOGIN_PROPERTY);
- this.password = properties.get(XMPP_PASSWORD_PROPERTY);
-
- String secureConnectionString = properties.get(XMPP_SECURE_CONNECTION_PROPERTY);
- secureConnection = "true".equalsIgnoreCase(secureConnectionString);
-
- String portString = properties.get(XMPP_PORT_PROPERTY);
- if (portString != null) {
- try {
- this.xmppPort = Integer.parseInt(portString);
- } catch (NumberFormatException e) {
- throw new CayenneRuntimeException("Invalid port: %s", portString);
- }
- }
- }
-
- public String getXmppHost() {
- return xmppHost;
- }
-
- public void setXmppHost(String xmppHost) {
- this.xmppHost = xmppHost;
- }
-
- public int getXmppPort() {
- return xmppPort;
- }
-
- public void setXmppPort(int xmppPort) {
- this.xmppPort = xmppPort;
- }
-
- public String getLoginId() {
- return loginId;
- }
-
- public void setLoginId(String loginId) {
- this.loginId = loginId;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public boolean isSecureConnection() {
- return secureConnection;
- }
-
- public void setSecureConnection(boolean secureConnection) {
- this.secureConnection = secureConnection;
- }
-
- public String getChatService() {
- return chatService;
- }
-
- public void setChatService(String chatService) {
- this.chatService = chatService;
- }
-
- public String getSessionHandle() {
- return sessionHandle;
- }
-
- public void setSessionHandle(String sessionHandle) {
- this.sessionHandle = sessionHandle;
- }
-
- @Override
- protected void startupExternal() throws Exception {
-
- // validate settings
- if (xmppHost == null) {
- throw new CayenneRuntimeException("Null 'xmppHost', can't start XMPPBridge");
- }
-
- // shutdown old bridge
- if (connected) {
- shutdownExternal();
- }
-
- try {
- // connect and log in to chat
- if (secureConnection) {
- int port = xmppPort > 0 ? xmppPort : DEFAULT_XMPP_SECURE_PORT;
- this.connection = new SSLXMPPConnection(xmppHost, port);
- } else {
- int port = xmppPort > 0 ? xmppPort : DEFAULT_XMPP_PORT;
- this.connection = new XMPPConnection(xmppHost, port);
- }
-
- if (loginId != null) {
- // it is important to provide a (pseudo) globally unique string as the
- // third argument ("sessionHandle" is such string); without it same
- // loginId can not be reused from the same machine.
- connection.login(loginId, password, sessionHandle);
- } else {
- connection.loginAnonymously();
- }
- } catch (XMPPException e) {
- throw new CayenneRuntimeException("Error connecting to XMPP Server: %s", e.getLocalizedMessage());
- }
-
- String service = chatService != null ? chatService : DEFAULT_CHAT_SERVICE;
- try {
- groupChat = connection.createGroupChat(externalSubject + '@' + service + "." + connection.getHost());
- groupChat.join(sessionHandle);
- groupChat.addMessageListener(new XMPPListener());
- } catch (XMPPException e) {
- throw new CayenneRuntimeException("Error setting up a group chat: %s", e.getLocalizedMessage());
- }
-
- this.connected = true;
- }
-
- @Override
- protected void shutdownExternal() throws Exception {
- if (groupChat != null) {
- groupChat.leave();
- groupChat = null;
- }
-
- if (connection != null) {
- connection.close();
- connection = null;
- }
-
- connected = false;
- }
-
- @Override
- protected void sendExternalEvent(CayenneEvent localEvent) throws Exception {
-
- Message message = groupChat.createMessage();
- message.setBody(serializeToString(localEvent));
-
- // set thread to our session handle to be able to discard messages from self
- message.setThread(sessionHandle);
-
- groupChat.sendMessage(message);
- }
-
- class XMPPListener implements PacketListener {
-
- public void processPacket(Packet packet) {
-
- if (packet instanceof Message) {
- Message message = (Message) packet;
-
- // filter our own messages
- if (sessionHandle.equals(message.getThread())) {
- String payload = message.getBody();
- try {
- Object event = deserializeFromString(payload);
- if (event instanceof CayenneEvent) {
- onExternalEvent((CayenneEvent) event);
- }
- } catch (Exception ex) {
- // ignore for now... need to add logging.
- }
- }
- }
- }
- }
-
- /**
- * Decodes the String (assuming it is using Base64 encoding), and then deserializes
- * object from the byte array.
- */
- static Object deserializeFromString(String string) throws Exception {
- if (Util.isEmptyString(string)) {
- return null;
- }
-
- byte[] bytes = Base64.getDecoder().decode(string);
- ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes));
- Object object = in.readObject();
- in.close();
- return object;
- }
-
- /**
- * Serializes object and then encodes it using Base64 encoding.
- */
- static String serializeToString(Object object) throws Exception {
- ByteArrayOutputStream bytes = new ByteArrayOutputStream();
- ObjectOutputStream out = new ObjectOutputStream(bytes);
- out.writeObject(object);
- out.close();
-
- return Base64.getEncoder().encodeToString(bytes.toByteArray());
- }
-}
diff --git a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridgeFactory.java b/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridgeFactory.java
deleted file mode 100644
index b9acc9836..000000000
--- a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridgeFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.Collection;
-import java.util.Map;
-
-/**
- * A factory of XMPPBridge. Note that to deploy an XMPPBridge, you need to have
- * <em>smack.jar</em> library in the runtime.
- *
- * @since 1.2
- */
-public class XMPPBridgeFactory implements EventBridgeFactory {
-
- @Override
- public EventBridge createEventBridge(
- Collection<EventSubject> localSubjects,
- String externalSubject,
- Map<String, String> properties) {
- return new XMPPBridge(localSubjects, externalSubject, properties);
- }
-
-}
diff --git a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridgeProvider.java b/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridgeProvider.java
deleted file mode 100644
index 84a09225b..000000000
--- a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPBridgeProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.access.DataDomain;
-import org.apache.cayenne.access.DataRowStore;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.di.DIRuntimeException;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.di.Provider;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class XMPPBridgeProvider implements Provider<EventBridge> {
-
- @Inject
- protected DataDomain dataDomain;
-
- @Inject(XMPPModule.XMPP_BRIDGE_PROPERTIES_MAP)
- Map<String, String> properties;
-
- @Override
- public EventBridge get() throws DIRuntimeException {
- EventSubject snapshotEventSubject = EventSubject.getSubject(DataRowStore.class.getClass(), dataDomain.getName());
-
- return new XMPPBridge(
- Collections.singleton(snapshotEventSubject),
- EventBridge.convertToExternalSubject(snapshotEventSubject),
- properties);
- }
-
-}
diff --git a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPModule.java b/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPModule.java
deleted file mode 100644
index 09407c32a..000000000
--- a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPModule.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.di.Binder;
-import org.apache.cayenne.di.MapBuilder;
-import org.apache.cayenne.di.Module;
-
-/**
- * @since 4.0
- */
-public class XMPPModule implements Module {
-
- /**
- * A DI container key for the Map<String, String> storing
- * {@link org.apache.cayenne.event.XMPPBridge} properties
- *
- * @since 4.0
- */
- public static final String XMPP_BRIDGE_PROPERTIES_MAP = "cayenne.server.xmpp_bridge";
-
- public static void contributeHost(Binder binder, String host) {
- contributeProperties(binder).put(XMPPBridge.XMPP_HOST_PROPERTY, host);
- }
-
- public static void contributePort(Binder binder, int port) {
- contributeProperties(binder).put(XMPPBridge.XMPP_PORT_PROPERTY, Integer.toString(port));
- }
-
- public static void contributeLogin(Binder binder, String login, String password) {
- contributeProperties(binder).put(XMPPBridge.XMPP_LOGIN_PROPERTY, login);
- contributeProperties(binder).put(XMPPBridge.XMPP_PASSWORD_PROPERTY, password);
- }
-
- public static void contributeChatService(Binder binder, String chatService) {
- contributeProperties(binder).put(XMPPBridge.XMPP_CHAT_SERVICE_PROPERTY, chatService);
- }
-
- public static void contributeSecureConnection(Binder binder, boolean secure) {
- contributeProperties(binder).put(XMPPBridge.XMPP_SECURE_CONNECTION_PROPERTY, Boolean.toString(secure));
- }
-
- private static MapBuilder<String> contributeProperties(Binder binder) {
- return binder.bindMap(String.class, XMPP_BRIDGE_PROPERTIES_MAP);
- }
-
- @Override
- public void configure(Binder binder) {
- // init properties' defaults
- contributeChatService(binder, XMPPBridge.DEFAULT_CHAT_SERVICE);
-
- binder.bind(EventBridge.class).toProvider(XMPPBridgeProvider.class).withoutScope();
- }
-}
diff --git a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPServerModuleProvider.java b/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPServerModuleProvider.java
deleted file mode 100644
index b98927115..000000000
--- a/cayenne-xmpp/src/main/java/org/apache/cayenne/event/XMPPServerModuleProvider.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.Collection;
-import java.util.Collections;
-
-import org.apache.cayenne.configuration.server.CayenneServerModuleProvider;
-import org.apache.cayenne.configuration.server.ServerModule;
-import org.apache.cayenne.di.Module;
-
-/**
- * @since 4.0
- */
-public class XMPPServerModuleProvider implements CayenneServerModuleProvider {
-
- @Override
- public Module module() {
- return new XMPPModule();
- }
-
- @Override
- public Class<? extends Module> moduleType() {
- return XMPPModule.class;
- }
-
- @Override
- public Collection<Class<? extends Module>> overrides() {
- return Collections.singletonList(ServerModule.class);
- }
-}
diff --git a/cayenne-xmpp/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider b/cayenne-xmpp/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider
deleted file mode 100644
index 62246ea25..000000000
--- a/cayenne-xmpp/src/main/resources/META-INF/services/org.apache.cayenne.configuration.server.CayenneServerModuleProvider
+++ /dev/null
@@ -1,20 +0,0 @@
-##################################################################
-# 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
-#
-# https://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.
-##################################################################
-
-org.apache.cayenne.event.XMPPServerModuleProvider
\ No newline at end of file
diff --git a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/CayenneXMPPModuleProviderTest.java b/cayenne-xmpp/src/test/java/org/apache/cayenne/event/CayenneXMPPModuleProviderTest.java
deleted file mode 100644
index 80c3afc8f..000000000
--- a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/CayenneXMPPModuleProviderTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.server.CayenneServerModuleProvider;
-import org.apache.cayenne.unit.util.ModuleProviderChecker;
-import org.junit.Test;
-
-/**
- * @since 4.0
- */
-public class CayenneXMPPModuleProviderTest {
-
- @Test
- public void testAutoLoadable() {
- ModuleProviderChecker.testProviderPresent(XMPPServerModuleProvider.class, CayenneServerModuleProvider.class);
- }
-
-}
diff --git a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeFactoryTest.java b/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeFactoryTest.java
deleted file mode 100644
index f3991f795..000000000
--- a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeFactoryTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.junit.Test;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-public class XMPPBridgeFactoryTest {
-
- protected Collection<EventSubject> subjects = Collections.singleton(new EventSubject("test"));
- protected String externalSubject = "subject";
-
- @Test
- public void testCreateEventBridge() {
- EventBridge bridge = new XMPPBridgeFactory().createEventBridge(
- subjects,
- externalSubject,
- Collections.<String, String>emptyMap());
-
- assertTrue(bridge instanceof XMPPBridge);
- assertEquals(subjects, bridge.getLocalSubjects());
- assertEquals(externalSubject, bridge.getExternalSubject());
- }
-
- @Test
- public void testUseMapPropertiesSetter() throws Exception {
- XMPPBridgeFactory bridgeFactory = new XMPPBridgeFactory();
- Map<String, String> properties = new HashMap<>();
-
- properties.put(XMPPBridge.XMPP_HOST_PROPERTY, XMPPBridgeProviderTest.HOST_TEST);
- properties.put(XMPPBridge.XMPP_CHAT_SERVICE_PROPERTY, XMPPBridgeProviderTest.CHAT_SERVICE_TEST);
- properties.put(XMPPBridge.XMPP_LOGIN_PROPERTY, XMPPBridgeProviderTest.LOGIN_TEST);
- properties.put(XMPPBridge.XMPP_PASSWORD_PROPERTY, XMPPBridgeProviderTest.PASSWORD_TEST);
- properties.put(XMPPBridge.XMPP_SECURE_CONNECTION_PROPERTY, String.valueOf(XMPPBridgeProviderTest.SECURE_CONNECTION_TEST));
- properties.put(XMPPBridge.XMPP_PORT_PROPERTY, String.valueOf(XMPPBridgeProviderTest.PORT_TEST));
-
- XMPPBridge bridge = (XMPPBridge) bridgeFactory.createEventBridge(subjects,
- externalSubject,
- properties);
-
- assertEquals(bridge.getXmppHost(), XMPPBridgeProviderTest.HOST_TEST);
- assertEquals(bridge.getChatService(), XMPPBridgeProviderTest.CHAT_SERVICE_TEST);
- assertEquals(bridge.getLoginId(), XMPPBridgeProviderTest.LOGIN_TEST);
- assertEquals(bridge.getPassword(), XMPPBridgeProviderTest.PASSWORD_TEST);
- assertEquals(bridge.getXmppPort(), XMPPBridgeProviderTest.PORT_TEST);
- assertEquals(bridge.isSecureConnection(), XMPPBridgeProviderTest.SECURE_CONNECTION_TEST);
- }
-}
diff --git a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeProviderTest.java b/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeProviderTest.java
deleted file mode 100644
index 9662f61c6..000000000
--- a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeProviderTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.access.DataDomain;
-import org.apache.cayenne.access.flush.DataDomainFlushActionFactory;
-import org.apache.cayenne.access.flush.DefaultDataDomainFlushActionFactory;
-import org.apache.cayenne.access.flush.operation.DefaultDbRowOpSorter;
-import org.apache.cayenne.access.flush.operation.DbRowOpSorter;
-import org.apache.cayenne.configuration.Constants;
-import org.apache.cayenne.configuration.DefaultRuntimeProperties;
-import org.apache.cayenne.configuration.RuntimeProperties;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.ClassLoaderManager;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.Module;
-import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
-import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
-import org.apache.cayenne.log.Slf4jJdbcEventLogger;
-import org.apache.cayenne.log.JdbcEventLogger;
-import org.apache.cayenne.tx.DefaultTransactionFactory;
-import org.apache.cayenne.tx.DefaultTransactionManager;
-import org.apache.cayenne.tx.TransactionFactory;
-import org.apache.cayenne.tx.TransactionManager;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-public class XMPPBridgeProviderTest {
-
- private static final DataDomain DOMAIN = new DataDomain("test");
- private static final EventManager EVENT_MANAGER = new DefaultEventManager();
- protected static final String HOST_TEST = "somehost.com";
- protected static final String CHAT_SERVICE_TEST = "conference";
- protected static final String LOGIN_TEST = "login";
- protected static final String PASSWORD_TEST = "password";
- protected static final boolean SECURE_CONNECTION_TEST = true;
- protected static final int PORT_TEST = 12345;
-
- @Test
- public void testGetXMPPBridge() throws Exception {
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new XMPPModule());
- EventBridge bridge = injector.getInstance(EventBridge.class);
-
- assertNotNull(bridge);
- assertTrue(bridge instanceof XMPPBridge);
- }
-
- @Test
- public void testUseProperties() throws Exception {
- Module module = binder -> {
- XMPPModule.contributeSecureConnection(binder, SECURE_CONNECTION_TEST);
- XMPPModule.contributeHost(binder, HOST_TEST);
- XMPPModule.contributePort(binder, PORT_TEST);
- XMPPModule.contributeLogin(binder, LOGIN_TEST, PASSWORD_TEST);
- XMPPModule.contributeChatService(binder, CHAT_SERVICE_TEST);
- };
-
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new XMPPModule(), module);
- XMPPBridge bridge = (XMPPBridge) injector.getInstance(EventBridge.class);
-
- assertEquals(HOST_TEST, bridge.getXmppHost());
- assertEquals(CHAT_SERVICE_TEST, bridge.getChatService());
- assertEquals(LOGIN_TEST, bridge.getLoginId());
- assertEquals(PASSWORD_TEST, bridge.getPassword());
- assertEquals(SECURE_CONNECTION_TEST, bridge.isSecureConnection());
- assertEquals(PORT_TEST, bridge.getXmppPort());
- }
-
- @Test
- public void testUseDefaultProperties() throws Exception {
- Injector injector = DIBootstrap.createInjector(new DefaultBindings(), new XMPPModule());
- XMPPBridge bridge = (XMPPBridge) injector.getInstance(EventBridge.class);
-
- assertEquals(XMPPBridge.DEFAULT_CHAT_SERVICE, bridge.getChatService());
- assertEquals(0, bridge.getXmppPort());
- assertFalse(bridge.isSecureConnection());
- }
-
- static class DefaultBindings implements Module {
- @Override
- public void configure(Binder binder) {
- binder.bindMap(String.class, Constants.PROPERTIES_MAP);
- binder.bind(DataDomain.class).toInstance(DOMAIN);
- binder.bind(EventManager.class).toInstance(EVENT_MANAGER);
- binder.bind(TransactionManager.class).to(DefaultTransactionManager.class);
- binder.bind(TransactionFactory.class).to(DefaultTransactionFactory.class);
- binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
- binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class);
- binder.bind(DataDomainFlushActionFactory.class).to(DefaultDataDomainFlushActionFactory.class);
- binder.bind(DbRowOpSorter.class).to(DefaultDbRowOpSorter.class);
- binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
- binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
- }
- }
-}
diff --git a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeTest.java b/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeTest.java
deleted file mode 100644
index 8d6d6e0f0..000000000
--- a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPBridgeTest.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- */
-public class XMPPBridgeTest {
-
- @Test
- public void testEventSerialization() throws Exception {
- Map<String, String> info = new HashMap<>();
- info.put("a", "b");
- CayenneEvent e = new CayenneEvent(this, this, info);
-
- String string = XMPPBridge.serializeToString(e);
- assertNotNull(string);
-
- Object copy = XMPPBridge.deserializeFromString(string);
- assertNotNull(copy);
- assertTrue(copy instanceof CayenneEvent);
-
- CayenneEvent e2 = (CayenneEvent) copy;
- assertEquals(info, e2.getInfo());
- assertNull(e2.getPostedBy());
- assertNull(e2.getSource());
- }
-}
diff --git a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPModuleIT.java b/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPModuleIT.java
deleted file mode 100644
index 1d58d4648..000000000
--- a/cayenne-xmpp/src/test/java/org/apache/cayenne/event/XMPPModuleIT.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.server.ServerModule;
-import org.apache.cayenne.di.Binder;
-import org.apache.cayenne.di.DIBootstrap;
-import org.apache.cayenne.di.Injector;
-import org.apache.cayenne.di.Module;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertThat;
-
-/**
- * @since 4.0
- */
-public class XMPPModuleIT {
-
- @Test
- public void testModule() {
-
- Module configModule = new Module() {
- public void configure(Binder binder) {
- ServerModule.contributeProperties(binder).put(Constants.SERVER_DOMAIN_NAME_PROPERTY, "test");
- }
- };
-
- Injector injector = DIBootstrap.createInjector(new ServerModule(), new XMPPModule(), configModule);
-
- EventBridge bridge = injector.getInstance(EventBridge.class);
- assertThat(bridge, instanceOf(XMPPBridge.class));
-
- EventBridge bridge2 = injector.getInstance(EventBridge.class);
- assertThat(bridge2, instanceOf(XMPPBridge.class));
- assertNotSame(bridge, bridge2);
- }
-
-}
diff --git a/pom.xml b/pom.xml
index 860d48776..25671b772 100644
--- a/pom.xml
+++ b/pom.xml
@@ -68,9 +68,6 @@
<module>cayenne-velocity</module>
<module>cayenne-web</module>
<module>cayenne-osgi</module>
- <module>cayenne-jgroups</module>
- <module>cayenne-jms</module>
- <module>cayenne-xmpp</module>
<module>maven-plugins</module>
<module>modeler</module>
<module>tutorials</module>