You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2016/11/07 16:36:44 UTC
[24/50] [abbrv] activemq-artemis git commit: ARTEMIS-781 add journal
record for address binding
ARTEMIS-781 add journal record for address binding
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/a2a48dfb
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/a2a48dfb
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/a2a48dfb
Branch: refs/heads/ARTEMIS-780
Commit: a2a48dfbba6e84cca1289ce351f6225d4674e46e
Parents: 076d78a
Author: jbertram <jb...@apache.com>
Authored: Mon Oct 10 15:11:50 2016 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Mon Nov 7 11:28:07 2016 -0500
----------------------------------------------------------------------
.../core/persistence/AddressBindingInfo.java | 34 +++++
.../core/persistence/impl/RoutingType.java | 43 ++++++
.../codec/PersistentAddressBindingEncoding.java | 135 +++++++++++++++++++
3 files changed, 212 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a2a48dfb/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/AddressBindingInfo.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/AddressBindingInfo.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/AddressBindingInfo.java
new file mode 100644
index 0000000..4256774
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/AddressBindingInfo.java
@@ -0,0 +1,34 @@
+/*
+ * 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.activemq.artemis.core.persistence;
+
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.core.persistence.impl.RoutingType;
+
+public interface AddressBindingInfo {
+
+ long getId();
+
+ SimpleString getName();
+
+ boolean isAutoCreated();
+
+ SimpleString getUser();
+
+ RoutingType getRoutingType();
+
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a2a48dfb/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/RoutingType.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/RoutingType.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/RoutingType.java
new file mode 100644
index 0000000..329d8e9
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/RoutingType.java
@@ -0,0 +1,43 @@
+/*
+ * 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.activemq.artemis.core.persistence.impl;
+
+public enum RoutingType {
+ Multicast, Anycast;
+
+ public byte getType() {
+ switch (this) {
+ case Multicast:
+ return 0;
+ case Anycast:
+ return 1;
+ default:
+ return -1;
+ }
+ }
+
+ public static RoutingType getType(byte type) {
+ switch (type) {
+ case 0:
+ return Multicast;
+ case 1:
+ return Anycast;
+ default:
+ return null;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/a2a48dfb/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentAddressBindingEncoding.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentAddressBindingEncoding.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentAddressBindingEncoding.java
new file mode 100644
index 0000000..8aa54e4
--- /dev/null
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/codec/PersistentAddressBindingEncoding.java
@@ -0,0 +1,135 @@
+/*
+ * 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.activemq.artemis.core.persistence.impl.journal.codec;
+
+import org.apache.activemq.artemis.api.core.ActiveMQBuffer;
+import org.apache.activemq.artemis.api.core.SimpleString;
+import org.apache.activemq.artemis.core.journal.EncodingSupport;
+import org.apache.activemq.artemis.core.persistence.AddressBindingInfo;
+import org.apache.activemq.artemis.core.persistence.impl.RoutingType;
+import org.apache.activemq.artemis.utils.DataConstants;
+
+public class PersistentAddressBindingEncoding implements EncodingSupport, AddressBindingInfo {
+
+ public long id;
+
+ public SimpleString name;
+
+ public boolean autoCreated;
+
+ public SimpleString user;
+
+ public RoutingType routingType;
+
+ public PersistentAddressBindingEncoding() {
+ }
+
+ @Override
+ public String toString() {
+ return "PersistentAddressBindingEncoding [id=" + id +
+ ", name=" +
+ name +
+ ", user=" +
+ user +
+ ", autoCreated=" +
+ autoCreated +
+ ", routingType=" +
+ routingType +
+ "]";
+ }
+
+ public PersistentAddressBindingEncoding(final SimpleString name,
+ final SimpleString user,
+ final boolean autoCreated,
+ final RoutingType routingType) {
+ this.name = name;
+ this.user = user;
+ this.autoCreated = autoCreated;
+ this.routingType = routingType;
+ }
+
+ @Override
+ public long getId() {
+ return id;
+ }
+
+ public void setId(final long id) {
+ this.id = id;
+ }
+
+ @Override
+ public SimpleString getName() {
+ return name;
+ }
+
+ @Override
+ public SimpleString getUser() {
+ return user;
+ }
+
+ @Override
+ public boolean isAutoCreated() {
+ return autoCreated;
+ }
+
+ @Override
+ public RoutingType getRoutingType() {
+ return routingType;
+ }
+
+ @Override
+ public void decode(final ActiveMQBuffer buffer) {
+ name = buffer.readSimpleString();
+
+ String metadata = buffer.readNullableSimpleString().toString();
+ if (metadata != null) {
+ String[] elements = metadata.split(";");
+ for (String element : elements) {
+ String[] keyValuePair = element.split("=");
+ if (keyValuePair.length == 2) {
+ if (keyValuePair[0].equals("user")) {
+ user = SimpleString.toSimpleString(keyValuePair[1]);
+ }
+ }
+ }
+ }
+
+ autoCreated = buffer.readBoolean();
+ routingType = RoutingType.getType(buffer.readByte());
+ }
+
+ @Override
+ public void encode(final ActiveMQBuffer buffer) {
+ buffer.writeSimpleString(name);
+ buffer.writeNullableSimpleString(createMetadata());
+ buffer.writeBoolean(autoCreated);
+ buffer.writeByte(routingType.getType());
+ }
+
+ @Override
+ public int getEncodeSize() {
+ return SimpleString.sizeofString(name) + DataConstants.SIZE_BOOLEAN +
+ SimpleString.sizeofNullableString(createMetadata()) +
+ DataConstants.SIZE_BYTE;
+ }
+
+ private SimpleString createMetadata() {
+ StringBuilder metadata = new StringBuilder();
+ metadata.append("user=").append(user).append(";");
+ return SimpleString.toSimpleString(metadata.toString());
+ }
+}