Repository: incubator-rocketmq Updated Branches: refs/heads/spec 57e775a83 -> 92454311e
Develop a vendor-neutral open standard for distributed messaging: refactor package structure access Project: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/commit/92454311 Tree: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/tree/92454311 Diff: http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/diff/92454311 Branch: refs/heads/spec Commit: 92454311e3cafa3f7aaeeadeb7d4db599a11ceac Parents: 57e775a Author: vintagewang <[email protected]> Authored: Sun Dec 25 17:46:49 2016 +0800 Committer: vintagewang <[email protected]> Committed: Sun Dec 25 17:46:49 2016 +0800 ---------------------------------------------------------------------- .../apache/openmessaging/MessagingEndPoint.java | 9 +++ .../openmessaging/MessagingEndPointManager.java | 2 +- .../apache/openmessaging/MessagingFactory.java | 25 ------- .../java/org/apache/openmessaging/Producer.java | 2 - .../internal/MessagingEndPointAdapter.java | 69 ++++++++++++++++++++ .../internal/MessagingEndPointFactory.java | 9 ++- .../internal/ServiceConstants.java | 6 +- .../internal/ServiceEndPointAdapter.java | 66 ------------------- .../openmessaging/internal/URISpecParser.java | 3 +- 9 files changed, 92 insertions(+), 99 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java index 5d90ae2..1299857 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPoint.java @@ -22,4 +22,13 @@ package org.apache.openmessaging; * @since 2016-12-25 */ public interface MessagingEndPoint { + void start(); + + void shutdown(); + + Producer createProducer(); + + PushConsumer createPushConsumer(); + + PullConsumer createPullConsumer(); } http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java index 3dfffb0..8909b71 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingEndPointManager.java @@ -38,6 +38,6 @@ public class MessagingEndPointManager { if (null == driverUrl || driverUrl.size() == 0) { throw new IllegalArgumentException("driver url parsed result.size ==0"); } - return MessagingEndPointFactory.createServiceEndPoint(driverUrl, properties); + return MessagingEndPointFactory.createMessagingEndPoint(driverUrl, properties); } } http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingFactory.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingFactory.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingFactory.java deleted file mode 100644 index 3720a01..0000000 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/MessagingFactory.java +++ /dev/null @@ -1,25 +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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.openmessaging; - -/** - * @author [email protected] - * @since 2016-12-25 - */ -public class MessagingFactory { - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/Producer.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/Producer.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/Producer.java index 4eb34a8..63c2abd 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/Producer.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/Producer.java @@ -26,6 +26,4 @@ public interface Producer { void shutdown(); void send(final Message message); - - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointAdapter.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointAdapter.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointAdapter.java new file mode 100644 index 0000000..8220f5c --- /dev/null +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointAdapter.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.openmessaging.internal; + + +import org.apache.openmessaging.MessagingEndPoint; + +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +/** + * @author [email protected] + * @since 2016-12-25 + */ +class MessagingEndPointAdapter { + private static Map<String, String> serviceEndPointClassMap = new HashMap<String, String>(); + + static { + serviceEndPointClassMap.put(ServiceConstants.DEFAULT_SERVICE_END_POINT, + ServiceConstants.DEFAULT_SERVICE_IMPL); + } + + static MessagingEndPoint instantiateMessagingEndPoint(String url, Properties properties) + throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, + InvocationTargetException, InstantiationException { + String serviceImpl = ServiceConstants.DEFAULT_SERVICE_IMPL; + if (serviceEndPointClassMap.containsKey(url)) + serviceImpl = serviceEndPointClassMap.get(url); + Class<?> serviceEndPointClass = Class.forName(serviceImpl); + if (serviceEndPointClass == null) + return null; + + String serviceUrl = ServiceConstants.DEFAULT_SERVICE_DISCOVERY_URL; + if (properties.get(ServiceConstants.URL) != null) { + String[] propertySplits = ((String) properties.get(ServiceConstants.URL)).split(ServiceConstants.PARAM_SEPARATOR); + if (propertySplits.length > 0) { + serviceUrl = propertySplits[0]; + for (int index = 1; index < propertySplits.length; index++) { + String[] kv = propertySplits[index].split(ServiceConstants.KV_SEPARATOR); + properties.put(kv[0], kv[1]); + } + } + } + properties.remove(ServiceConstants.URL); + properties.put(ServiceConstants.DISCOVERY_URL, serviceUrl); + Class[] paramTypes = {Properties.class}; + Constructor constructor = serviceEndPointClass.getConstructor(paramTypes); + assert constructor != null; + return (MessagingEndPoint) constructor.newInstance(properties); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java index 5c4990a..f2f8eda 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/MessagingEndPointFactory.java @@ -24,15 +24,18 @@ import java.util.List; import java.util.Map; import java.util.Properties; - +/** + * @author [email protected] + * @since 2016-12-25 + */ public class MessagingEndPointFactory { - public static MessagingEndPoint createServiceEndPoint(Map<String, List<String>> url, Properties properties) + public static MessagingEndPoint createMessagingEndPoint(Map<String, List<String>> url, Properties properties) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { List<String> driver = url.get(ServiceConstants.SPI_NAME); List<String> urls = url.get(ServiceConstants.URL_NAME); if (urls != null && urls.size() > 0) properties.put(ServiceConstants.URL, urls.get(0)); - return ServiceEndPointAdapter.instantiateServiceEndPoint(driver.get(0), properties); + return MessagingEndPointAdapter.instantiateMessagingEndPoint(driver.get(0), properties); } } http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceConstants.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceConstants.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceConstants.java index 42e867a..13cd376 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceConstants.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceConstants.java @@ -17,7 +17,11 @@ package org.apache.openmessaging.internal; -public class ServiceConstants { +/** + * @author [email protected] + * @since 2016-12-25 + */ +class ServiceConstants { public static final String PROTOCOL_NAME = "protocol"; public static final String SPI_NAME = "spi"; public static final String URL_NAME = "urls"; http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceEndPointAdapter.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceEndPointAdapter.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceEndPointAdapter.java deleted file mode 100644 index 19b5733..0000000 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/ServiceEndPointAdapter.java +++ /dev/null @@ -1,66 +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 - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.openmessaging.internal; - - -import org.apache.openmessaging.MessagingEndPoint; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - - -public class ServiceEndPointAdapter { - private static Map<String, String> serviceEndPointClassMap = new HashMap<String, String>(); - - static { - serviceEndPointClassMap.put(ServiceConstants.DEFAULT_SERVICE_END_POINT, - ServiceConstants.DEFAULT_SERVICE_IMPL); - } - - static MessagingEndPoint instantiateServiceEndPoint(String url, Properties properties) - throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, - InvocationTargetException, InstantiationException { - String serviceImpl = ServiceConstants.DEFAULT_SERVICE_IMPL; - if (serviceEndPointClassMap.containsKey(url)) - serviceImpl = serviceEndPointClassMap.get(url); - Class<?> serviceEndPointClass = Class.forName(serviceImpl); - if (serviceEndPointClass == null) - return null; - - String serviceUrl = ServiceConstants.DEFAULT_SERVICE_DISCOVERY_URL; - if (properties.get(ServiceConstants.URL) != null) { - String[] propertySplits = ((String) properties.get(ServiceConstants.URL)).split(ServiceConstants.PARAM_SEPARATOR); - if (propertySplits.length > 0) { - serviceUrl = propertySplits[0]; - for (int index = 1; index < propertySplits.length; index++) { - String[] kv = propertySplits[index].split(ServiceConstants.KV_SEPARATOR); - properties.put(kv[0], kv[1]); - } - } - } - properties.remove(ServiceConstants.URL); - properties.put(ServiceConstants.DISCOVERY_URL, serviceUrl); - Class[] paramTypes = {Properties.class}; - Constructor constructor = serviceEndPointClass.getConstructor(paramTypes); - assert constructor != null; - return (MessagingEndPoint) constructor.newInstance(properties); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-rocketmq/blob/92454311/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/URISpecParser.java ---------------------------------------------------------------------- diff --git a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/URISpecParser.java b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/URISpecParser.java index cbe07ba..1d7a8e1 100644 --- a/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/URISpecParser.java +++ b/spec/code/messaging-user-level-api/java/src/main/java/org/apache/openmessaging/internal/URISpecParser.java @@ -24,7 +24,8 @@ import java.util.List; import java.util.Map; /** - * @author xuanyin + * @author [email protected] + * @since 2016-12-25 */ public class URISpecParser { public static Map<String, List<String>> parseURI(String uri) {
