http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport/Transfer.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport/Transfer.java b/proton-j/src/main/java/org/apache/qpid/proton/transport/Transfer.java deleted file mode 100644 index 1723782..0000000 --- a/proton-j/src/main/java/org/apache/qpid/proton/transport/Transfer.java +++ /dev/null @@ -1,253 +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.qpid.proton.transport; - -import java.util.List; - -import org.apache.qpid.proton.codec2.DecodeException; -import org.apache.qpid.proton.codec2.DescribedTypeFactory; -import org.apache.qpid.proton.codec2.Encodable; -import org.apache.qpid.proton.codec2.Encoder; - -public final class Transfer implements Encodable -{ - public final static long DESCRIPTOR_LONG = 0x0000000000000014L; - - public final static String DESCRIPTOR_STRING = "amqp:transfer:list"; - - public final static Factory FACTORY = new Factory(); - - private int _handle; - - private int _deliveryId; - - private byte[] _deliveryTag; - - private int _messageFormat; - - private boolean _settled; - - private boolean _more; - - private ReceiverSettleMode _rcvSettleMode; - - private DeliveryState _state; - - private boolean _resume; - - private boolean _aborted; - - private boolean _batchable; - - public int getHandle() - { - return _handle; - } - - public void setHandle(int handle) - { - _handle = handle; - } - - public int getDeliveryId() - { - return _deliveryId; - } - - public void setDeliveryId(int deliveryId) - { - _deliveryId = deliveryId; - } - - public byte[] getDeliveryTag() - { - return _deliveryTag; - } - - public void setDeliveryTag(byte[] deliveryTag) - { - _deliveryTag = deliveryTag; - } - - public int getMessageFormat() - { - return _messageFormat; - } - - public void setMessageFormat(int messageFormat) - { - _messageFormat = messageFormat; - } - - public Boolean getSettled() - { - return _settled; - } - - public void setSettled(Boolean settled) - { - _settled = settled; - } - - public boolean getMore() - { - return _more; - } - - public void setMore(boolean more) - { - _more = more; - } - - public ReceiverSettleMode getRcvSettleMode() - { - return _rcvSettleMode; - } - - public void setRcvSettleMode(ReceiverSettleMode rcvSettleMode) - { - _rcvSettleMode = rcvSettleMode; - } - - public DeliveryState getState() - { - return _state; - } - - public void setState(DeliveryState state) - { - _state = state; - } - - public boolean getResume() - { - return _resume; - } - - public void setResume(boolean resume) - { - _resume = resume; - } - - public boolean getAborted() - { - return _aborted; - } - - public void setAborted(boolean aborted) - { - _aborted = aborted; - } - - public boolean getBatchable() - { - return _batchable; - } - - public void setBatchable(boolean batchable) - { - _batchable = batchable; - } - - @Override - public void encode(Encoder encoder) - { - encoder.putDescriptor(); - encoder.putUlong(DESCRIPTOR_LONG); - encoder.putList(); - encoder.putUint(_handle); - encoder.putUint(_deliveryId); - encoder.putBinary(_deliveryTag, 0, _deliveryTag.length); - encoder.putUint(_messageFormat); - encoder.putBoolean(_settled); - encoder.putBoolean(_more); - encoder.putUbyte(_rcvSettleMode.getValue()); - if (_state == null) - { - encoder.putNull(); - } - else - { - _state.encode(encoder); - } - encoder.putBoolean(_resume); - encoder.putBoolean(_aborted); - encoder.putBoolean(_batchable); - encoder.end(); - } - - public static final class Factory implements DescribedTypeFactory - { - @SuppressWarnings("unchecked") - public Object create(Object in) throws DecodeException - { - List<Object> l = (List<Object>) in; - Transfer transfer = new Transfer(); - - switch (11 - l.size()) - { - case 0: - transfer.setBatchable(l.get(10) == null ? false : (Boolean) l.get(10)); - case 1: - transfer.setAborted(l.get(9) == null ? false : (Boolean) l.get(9)); - case 2: - transfer.setResume(l.get(8) == null ? false : (Boolean) l.get(8)); - case 3: - transfer.setState((DeliveryState) l.get(7)); - case 4: - transfer.setRcvSettleMode(l.get(6) == null ? null : ReceiverSettleMode.values()[(Integer) l.get(6)]); - case 5: - transfer.setMore(l.get(5) == null ? false : (Boolean) l.get(5)); - case 6: - transfer.setSettled((Boolean) l.get(4)); - case 7: - transfer.setMessageFormat((Integer) l.get(3)); - case 8: - transfer.setDeliveryTag((byte[]) l.get(2)); - case 9: - transfer.setDeliveryId((Integer) l.get(1)); - case 10: - transfer.setHandle((Integer) l.get(0)); - } - - return transfer; - } - } - - @Override - public String toString() - { - return "Transfer{" + - "handle=" + _handle + - ", deliveryId=" + _deliveryId + - ", deliveryTag=" + _deliveryTag + - ", messageFormat=" + _messageFormat + - ", settled=" + _settled + - ", more=" + _more + - ", rcvSettleMode=" + _rcvSettleMode + - ", state=" + _state + - ", resume=" + _resume + - ", aborted=" + _aborted + - ", batchable=" + _batchable + - '}'; - } -} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Attach.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Attach.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Attach.java new file mode 100644 index 0000000..f0d4390 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Attach.java @@ -0,0 +1,340 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Attach implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000012L; + + public final static String DESCRIPTOR_STRING = "amqp:attach:list"; + + public final static Factory FACTORY = new Factory(); + + private String _name; + + private int _handle; + + private Role _role = Role.SENDER; + + private SenderSettleMode _sndSettleMode = SenderSettleMode.MIXED; + + private ReceiverSettleMode _rcvSettleMode = ReceiverSettleMode.FIRST; + + private Source _source; + + private Target _target; + + private Map<Object, Object> _unsettled; + + private boolean _incompleteUnsettled; + + private int _initialDeliveryCount; + + private long _maxMessageSize; + + private String[] _offeredCapabilities; + + private String[] _desiredCapabilities; + + private Map<Object, Object> _properties; + + public String getName() + { + return _name; + } + + public void setName(String name) + { + if (name == null) + { + throw new NullPointerException("the name field is mandatory"); + } + + _name = name; + } + + public int getHandle() + { + return _handle; + } + + public void setHandle(int handle) + { + _handle = handle; + } + + public Role getRole() + { + return _role; + } + + public void setRole(Role role) + { + if (role == null) + { + throw new NullPointerException("Role cannot be null"); + } + _role = role; + } + + public SenderSettleMode getSndSettleMode() + { + return _sndSettleMode; + } + + public void setSndSettleMode(SenderSettleMode sndSettleMode) + { + _sndSettleMode = sndSettleMode == null ? SenderSettleMode.MIXED : sndSettleMode; + } + + public ReceiverSettleMode getRcvSettleMode() + { + return _rcvSettleMode; + } + + public void setRcvSettleMode(ReceiverSettleMode rcvSettleMode) + { + _rcvSettleMode = rcvSettleMode == null ? ReceiverSettleMode.FIRST : rcvSettleMode; + } + + public Source getSource() + { + return _source; + } + + public void setSource(Source source) + { + _source = source; + } + + public Target getTarget() + { + return _target; + } + + public void setTarget(Target target) + { + _target = target; + } + + public Map<Object, Object> getUnsettled() + { + return _unsettled; + } + + public void setUnsettled(Map<Object, Object> unsettled) + { + _unsettled = unsettled; + } + + public boolean getIncompleteUnsettled() + { + return _incompleteUnsettled; + } + + public void setIncompleteUnsettled(boolean incompleteUnsettled) + { + _incompleteUnsettled = incompleteUnsettled; + } + + public int getInitialDeliveryCount() + { + return _initialDeliveryCount; + } + + public void setInitialDeliveryCount(int initialDeliveryCount) + { + _initialDeliveryCount = initialDeliveryCount; + } + + public long getMaxMessageSize() + { + return _maxMessageSize; + } + + public void setMaxMessageSize(long maxMessageSize) + { + _maxMessageSize = maxMessageSize; + } + + public String[] getOfferedCapabilities() + { + return _offeredCapabilities; + } + + public void setOfferedCapabilities(String... offeredCapabilities) + { + _offeredCapabilities = offeredCapabilities; + } + + public String[] getDesiredCapabilities() + { + return _desiredCapabilities; + } + + public void setDesiredCapabilities(String... desiredCapabilities) + { + _desiredCapabilities = desiredCapabilities; + } + + public Map<Object, Object> getProperties() + { + return _properties; + } + + public void setProperties(Map<Object, Object> properties) + { + _properties = properties; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putString(_name); + encoder.putUint(_handle); + encoder.putBoolean(_role.getValue()); + encoder.putUbyte(_sndSettleMode.getValue()); + encoder.putUbyte(_rcvSettleMode.getValue()); + if (_source == null) + { + encoder.putNull(); + } + else + { + _source.encode(encoder); + } + if (_target == null) + { + encoder.putNull(); + } + else + { + _target.encode(encoder); + } + CodecHelper.encodeMap(encoder, _unsettled); + encoder.putBoolean(_incompleteUnsettled); + encoder.putUint(_initialDeliveryCount); + encoder.putUlong(_maxMessageSize); + CodecHelper.encodeSymbolArray(encoder, _offeredCapabilities); + CodecHelper.encodeSymbolArray(encoder, _desiredCapabilities); + CodecHelper.encodeMap(encoder, _properties); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + Attach attach = new Attach(); + + switch (14 - l.size()) + { + + case 0: + attach.setProperties((Map<Object, Object>) l.get(13)); + case 1: + Object val1 = l.get(12); + if (val1 == null || val1.getClass().isArray()) + { + attach.setDesiredCapabilities((String[]) val1); + } + else + { + attach.setDesiredCapabilities((String) val1); + } + case 2: + Object val2 = l.get(11); + if (val2 == null || val2.getClass().isArray()) + { + attach.setOfferedCapabilities((String[]) val2); + } + else + { + attach.setOfferedCapabilities((String) val2); + } + case 3: + attach.setMaxMessageSize((Long) l.get(10)); + case 4: + attach.setInitialDeliveryCount((Integer) l.get(9)); + case 5: + Boolean incompleteUnsettled = (Boolean) l.get(8); + attach.setIncompleteUnsettled(incompleteUnsettled == null ? false : incompleteUnsettled); + case 6: + attach.setUnsettled((Map<Object, Object>) l.get(7)); + case 7: + attach.setTarget((Target) l.get(6)); + case 8: + attach.setSource((Source) l.get(5)); + case 9: + attach.setRcvSettleMode(l.get(4) == null ? ReceiverSettleMode.FIRST + : ReceiverSettleMode.values()[(Integer) l.get(4)]); + case 10: + attach.setSndSettleMode(l.get(3) == null ? SenderSettleMode.MIXED : SenderSettleMode.values()[(Integer) l + .get(3)]); + case 11: + attach.setRole(Boolean.TRUE.equals(l.get(2)) ? Role.RECEIVER : Role.SENDER); + case 12: + attach.setHandle((Integer) l.get(1)); + case 13: + attach.setName((String) l.get(0)); + } + + return attach; + } + } + + @Override + public String toString() + { + return "Attach{" + + "name='" + _name + '\'' + + ", handle=" + _handle + + ", role=" + _role + + ", sndSettleMode=" + _sndSettleMode + + ", rcvSettleMode=" + _rcvSettleMode + + ", source=" + _source + + ", target=" + _target + + ", unsettled=" + _unsettled + + ", incompleteUnsettled=" + _incompleteUnsettled + + ", initialDeliveryCount=" + _initialDeliveryCount + + ", maxMessageSize=" + _maxMessageSize + + ", offeredCapabilities=" + (_offeredCapabilities == null ? null : Arrays.asList(_offeredCapabilities)) + + ", desiredCapabilities=" + (_desiredCapabilities == null ? null : Arrays.asList(_desiredCapabilities)) + + ", properties=" + _properties + + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Begin.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Begin.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Begin.java new file mode 100644 index 0000000..b5547bb --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Begin.java @@ -0,0 +1,218 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Begin implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000012L; + + public final static String DESCRIPTOR_STRING = "amqp:begin:list"; + + public final static Factory FACTORY = new Factory(); + + private int _remoteChannel = -1; + + private int _nextOutgoingId; + + private int _incomingWindow; + + private int _outgoingWindow; + + private int _handleMax = 0xffffffff; + + private String[] _offeredCapabilities; + + private String[] _desiredCapabilities; + + private Map<String, Object> _properties; + + public int getRemoteChannel() + { + return _remoteChannel; + } + + public void setRemoteChannel(int remoteChannel) + { + _remoteChannel = remoteChannel; + } + + public long getNextOutgoingId() + { + return _nextOutgoingId; + } + + public void setNextOutgoingId(int nextOutgoingId) + { + _nextOutgoingId = nextOutgoingId; + } + + public int getIncomingWindow() + { + return _incomingWindow; + } + + public void setIncomingWindow(int incomingWindow) + { + _incomingWindow = incomingWindow; + } + + public int getOutgoingWindow() + { + return _outgoingWindow; + } + + public void setOutgoingWindow(int outgoingWindow) + { + _outgoingWindow = outgoingWindow; + } + + public int getHandleMax() + { + return _handleMax; + } + + public void setHandleMax(int handleMax) + { + _handleMax = handleMax; + } + + public String[] getOfferedCapabilities() + { + return _offeredCapabilities; + } + + public void setOfferedCapabilities(String... offeredCapabilities) + { + _offeredCapabilities = offeredCapabilities; + } + + public String[] getDesiredCapabilities() + { + return _desiredCapabilities; + } + + public void setDesiredCapabilities(String... desiredCapabilities) + { + _desiredCapabilities = desiredCapabilities; + } + + public Map<String, Object> getProperties() + { + return _properties; + } + + public void setProperties(Map<String, Object> properties) + { + _properties = properties; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putUshort(_remoteChannel); + encoder.putUint(_nextOutgoingId); + encoder.putUint(_incomingWindow); + encoder.putUint(_outgoingWindow); + encoder.putUint(_handleMax); + CodecHelper.encodeSymbolArray(encoder, _offeredCapabilities); + CodecHelper.encodeSymbolArray(encoder, _desiredCapabilities); + CodecHelper.encodeMapWithKeyAsSymbol(encoder, _properties); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + Begin begin = new Begin(); + + switch (8 - l.size()) + { + + case 0: + begin.setProperties((Map<String, Object>) l.get(7)); + case 1: + Object val1 = l.get(6); + if (val1 == null || val1.getClass().isArray()) + { + begin.setDesiredCapabilities((String[]) val1); + } + else + { + begin.setDesiredCapabilities((String) val1); + } + case 2: + Object val2 = l.get(5); + if (val2 == null || val2.getClass().isArray()) + { + begin.setOfferedCapabilities((String[]) val2); + } + else + { + begin.setOfferedCapabilities((String) val2); + } + case 3: + begin.setHandleMax(l.get(4) == null ? 0xffffffff : (Integer) l.get(4)); + case 4: + begin.setOutgoingWindow((Integer) l.get(3)); + case 5: + begin.setIncomingWindow((Integer) l.get(2)); + case 6: + begin.setNextOutgoingId((Integer) l.get(1)); + case 7: + begin.setRemoteChannel((Integer) l.get(0)); + } + + return begin; + } + } + + @Override + public String toString() + { + return "Begin{" + + "remoteChannel=" + _remoteChannel + + ", nextOutgoingId=" + _nextOutgoingId + + ", incomingWindow=" + _incomingWindow + + ", outgoingWindow=" + _outgoingWindow + + ", handleMax=" + _handleMax + + ", offeredCapabilities=" + (_offeredCapabilities == null ? null : Arrays.asList(_offeredCapabilities)) + + ", desiredCapabilities=" + (_desiredCapabilities == null ? null : Arrays.asList(_desiredCapabilities)) + + ", properties=" + _properties + + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Close.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Close.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Close.java new file mode 100644 index 0000000..a3318f5 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Close.java @@ -0,0 +1,90 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.List; + +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Close implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000018L; + + public final static String DESCRIPTOR_STRING = "amqp:close:list"; + + public final static Factory FACTORY = new Factory(); + + private ErrorCondition _error; + + public ErrorCondition getError() + { + return _error; + } + + public void setError(ErrorCondition error) + { + _error = error; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + if (_error == null) + { + encoder.putNull(); + } + else + { + _error.encode(encoder); + } + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + Close close = new Close(); + + if (!l.isEmpty()) + { + close.setError((ErrorCondition) l.get(0)); + } + + return close; + } + } + + @Override + public String toString() + { + return "Close{" + "error=" + _error + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/DeliveryState.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/DeliveryState.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/DeliveryState.java new file mode 100644 index 0000000..ce56451 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/DeliveryState.java @@ -0,0 +1,35 @@ +/* + * + * 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.qpid.proton.transport2; + +import org.apache.qpid.proton.codec2.Encodable; + +/** + * Describes the state of a delivery at a link end-point. + * + * Note that the the sender is the owner of the state. The receiver merely + * influences the state. TODO clarify the concept of ownership? how is link + * recovery involved? + */ +public interface DeliveryState extends Encodable +{ + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Detach.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Detach.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Detach.java new file mode 100644 index 0000000..310e249 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Detach.java @@ -0,0 +1,122 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.List; + +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Detach implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000016L; + + public final static String DESCRIPTOR_STRING = "amqp:detach:list"; + + public final static Factory FACTORY = new Factory(); + + private int _handle; + + private boolean _closed; + + private ErrorCondition _error; + + public int getHandle() + { + return _handle; + } + + public void setHandle(int handle) + { + _handle = handle; + } + + public boolean getClosed() + { + return _closed; + } + + public void setClosed(boolean closed) + { + _closed = closed; + } + + public ErrorCondition getError() + { + return _error; + } + + public void setError(ErrorCondition error) + { + _error = error; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putUint(_handle); + encoder.putBoolean(_closed); + if (_error == null) + { + encoder.putNull(); + } + else + { + _error.encode(encoder); + } + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + Detach detach = new Detach(); + + switch (3 - l.size()) + { + + case 0: + detach.setError((ErrorCondition) l.get(2)); + case 1: + detach.setClosed(l.get(1) == null ? false : (Boolean) l.get(1)); + case 2: + detach.setHandle((Integer) l.get(0)); + } + + return detach; + } + } + + @Override + public String toString() + { + return "Detach{" + "handle=" + _handle + ", closed=" + _closed + ", error=" + _error + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Disposition.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Disposition.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Disposition.java new file mode 100644 index 0000000..cc1ae97 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Disposition.java @@ -0,0 +1,181 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.List; + +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Disposition implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000015L; + + public final static String DESCRIPTOR_STRING = "amqp:disposition:list"; + + public final static Factory FACTORY = new Factory(); + + private Role _role = Role.SENDER; + + private int _first; + + private int _last; + + private boolean _settled; + + private DeliveryState _state; + + private boolean _batchable; + + public Role getRole() + { + return _role; + } + + public void setRole(Role role) + { + if (role == null) + { + throw new NullPointerException("Role cannot be null"); + } + _role = role; + } + + public int getFirst() + { + return _first; + } + + public void setFirst(int first) + { + _first = first; + } + + public int getLast() + { + return _last; + } + + public void setLast(int last) + { + _last = last; + } + + public boolean getSettled() + { + return _settled; + } + + public void setSettled(boolean settled) + { + _settled = settled; + } + + public DeliveryState getState() + { + return _state; + } + + public void setState(DeliveryState state) + { + _state = state; + } + + public boolean getBatchable() + { + return _batchable; + } + + public void setBatchable(boolean batchable) + { + _batchable = batchable; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putBoolean(_role.getValue()); + encoder.putUint(_first); + encoder.putUint(_last); + encoder.putBoolean(_settled); + if (_state == null) + { + encoder.putNull(); + } + else + { + _state.encode(encoder); + } + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + Disposition disposition = new Disposition(); + + if (l.isEmpty()) + { + throw new DecodeException("The first field cannot be omitted"); + } + + switch (6 - l.size()) + { + + case 0: + disposition.setBatchable(l.get(5) == null ? false : (Boolean) l.get(5)); + case 1: + disposition.setState((DeliveryState) l.get(4)); + case 2: + disposition.setSettled(l.get(3) == null ? false : (Boolean) l.get(3)); + case 3: + disposition.setLast((Integer) l.get(2)); + case 4: + disposition.setFirst((Integer) l.get(1)); + case 5: + disposition.setRole(Boolean.TRUE.equals(l.get(0)) ? Role.RECEIVER : Role.SENDER); + } + return disposition; + } + } + + @Override + public String toString() + { + return "Disposition{" + + "role=" + _role + + ", first=" + _first + + ", last=" + _last + + ", settled=" + _settled + + ", state=" + _state + + ", batchable=" + _batchable + + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/End.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/End.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/End.java new file mode 100644 index 0000000..d994f24 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/End.java @@ -0,0 +1,90 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.List; + +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class End implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000017L; + + public final static String DESCRIPTOR_STRING = "amqp:end:list"; + + public final static Factory FACTORY = new Factory(); + + private ErrorCondition _error; + + public ErrorCondition getError() + { + return _error; + } + + public void setError(ErrorCondition error) + { + _error = error; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + if (_error == null) + { + encoder.putNull(); + } + else + { + _error.encode(encoder); + } + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + End end = new End(); + + if (!l.isEmpty()) + { + end.setError((ErrorCondition) l.get(0)); + } + + return end; + } + } + + @Override + public String toString() + { + return "End{" + "error=" + _error + '}'; + } +} http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/ErrorCondition.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/ErrorCondition.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/ErrorCondition.java new file mode 100644 index 0000000..6a113d5 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/ErrorCondition.java @@ -0,0 +1,183 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class ErrorCondition implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x000000000000001dL; + + public final static String DESCRIPTOR_STRING = "amqp:error:list"; + + public final static Factory FACTORY = new Factory(); + + private String _condition; + + private String _description; + + private Map<Object, Object> _info; + + public ErrorCondition() + { + } + + public ErrorCondition(String condition, String description) + { + _condition = condition; + _description = description; + } + + public String getCondition() + { + return _condition; + } + + public void setCondition(String condition) + { + if (condition == null) + { + throw new NullPointerException("the condition field is mandatory"); + } + + _condition = condition; + } + + public String getDescription() + { + return _description; + } + + public void setDescription(String description) + { + _description = description; + } + + public Map<Object, Object> getInfo() + { + return _info; + } + + public void setInfo(Map<Object, Object> info) + { + _info = info; + } + + public void clear() + { + _condition = null; + _description = null; + _info = null; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putSymbol(_condition); + encoder.putString(_description); + CodecHelper.encodeMap(encoder, _info); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + ErrorCondition error = new ErrorCondition(); + + switch (3 - l.size()) + { + case 0: + error.setInfo((Map<Object, Object>) l.get(2)); + case 1: + error.setDescription((String) l.get(1)); + case 2: + error.setCondition((String) l.get(0)); + } + return error; + } + } + + public void copyFrom(ErrorCondition condition) + { + _condition = condition._condition; + _description = condition._description; + _info = condition._info; + } + + @Override + public boolean equals(Object o) + { + if (this == o) + { + return true; + } + if (o == null || getClass() != o.getClass()) + { + return false; + } + + ErrorCondition that = (ErrorCondition) o; + + if (_condition != null ? !_condition.equals(that._condition) : that._condition != null) + { + return false; + } + if (_description != null ? !_description.equals(that._description) : that._description != null) + { + return false; + } + if (_info != null ? !_info.equals(that._info) : that._info != null) + { + return false; + } + + return true; + } + + @Override + public int hashCode() + { + int result = _condition != null ? _condition.hashCode() : 0; + result = 31 * result + (_description != null ? _description.hashCode() : 0); + result = 31 * result + (_info != null ? _info.hashCode() : 0); + return result; + } + + @Override + public String toString() + { + return "Error{" + "condition=" + _condition + ", description='" + _description + '\'' + ", info=" + _info + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Flow.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Flow.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Flow.java new file mode 100644 index 0000000..8ff6034 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Flow.java @@ -0,0 +1,250 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Flow implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000013L; + + public final static String DESCRIPTOR_STRING = "amqp:flow:list"; + + public final static Factory FACTORY = new Factory(); + + private int _nextIncomingId; + + private int _incomingWindow; + + private int _nextOutgoingId; + + private int _outgoingWindow; + + private int _handle; + + private int _deliveryCount; + + private int _linkCredit; + + private int _available; + + private boolean _drain; + + private boolean _echo; + + private Map<Object, Object> _properties; + + public int getNextIncomingId() + { + return _nextIncomingId; + } + + public void setNextIncomingId(int nextIncomingId) + { + _nextIncomingId = nextIncomingId; + } + + public int getIncomingWindow() + { + return _incomingWindow; + } + + public void setIncomingWindow(int incomingWindow) + { + _incomingWindow = incomingWindow; + } + + public int getNextOutgoingId() + { + return _nextOutgoingId; + } + + public void setNextOutgoingId(int nextOutgoingId) + { + _nextOutgoingId = nextOutgoingId; + } + + public int getOutgoingWindow() + { + return _outgoingWindow; + } + + public void setOutgoingWindow(int outgoingWindow) + { + _outgoingWindow = outgoingWindow; + } + + public int getHandle() + { + return _handle; + } + + public void setHandle(int handle) + { + _handle = handle; + } + + public int getDeliveryCount() + { + return _deliveryCount; + } + + public void setDeliveryCount(int deliveryCount) + { + _deliveryCount = deliveryCount; + } + + public int getLinkCredit() + { + return _linkCredit; + } + + public void setLinkCredit(int linkCredit) + { + _linkCredit = linkCredit; + } + + public int getAvailable() + { + return _available; + } + + public void setAvailable(int available) + { + _available = available; + } + + public boolean getDrain() + { + return _drain; + } + + public void setDrain(boolean drain) + { + _drain = drain; + } + + public boolean getEcho() + { + return _echo; + } + + public void setEcho(boolean echo) + { + _echo = echo; + } + + public Map<Object, Object> getProperties() + { + return _properties; + } + + public void setProperties(Map<Object, Object> properties) + { + _properties = properties; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putUint(_nextIncomingId); + encoder.putUint(_incomingWindow); + encoder.putUint(_nextOutgoingId); + encoder.putUint(_outgoingWindow); + encoder.putUint(_handle); + encoder.putUint(_deliveryCount); + encoder.putUint(_linkCredit); + encoder.putUint(_available); + encoder.putBoolean(_drain); + encoder.putBoolean(_echo); + CodecHelper.encodeMap(encoder, _properties); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + + Flow flow = new Flow(); + + switch (11 - l.size()) + { + + case 0: + flow.setProperties(((Map<Object, Object>) l.get(10))); + case 1: + flow.setEcho(l.get(9) == null ? false : (Boolean) l.get(9)); + case 2: + flow.setDrain(l.get(8) == null ? false : (Boolean) l.get(8)); + case 3: + flow.setAvailable((Integer) l.get(7)); + case 4: + flow.setLinkCredit((Integer) l.get(6)); + case 5: + flow.setDeliveryCount((Integer) l.get(5)); + case 6: + flow.setHandle((Integer) l.get(4)); + case 7: + flow.setOutgoingWindow((Integer) l.get(3)); + case 8: + flow.setNextOutgoingId((Integer) l.get(2)); + case 9: + flow.setIncomingWindow((Integer) l.get(1)); + case 10: + flow.setNextIncomingId((Integer) l.get(0)); + } + + return flow; + } + } + + @Override + public String toString() + { + return "Flow{" + + "nextIncomingId=" + _nextIncomingId + + ", incomingWindow=" + _incomingWindow + + ", nextOutgoingId=" + _nextOutgoingId + + ", outgoingWindow=" + _outgoingWindow + + ", handle=" + _handle + + ", deliveryCount=" + _deliveryCount + + ", linkCredit=" + _linkCredit + + ", available=" + _available + + ", drain=" + _drain + + ", echo=" + _echo + + ", properties=" + _properties + + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Open.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Open.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Open.java new file mode 100644 index 0000000..dfbdba7 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Open.java @@ -0,0 +1,271 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; + +public final class Open implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000010L; + + public final static String DESCRIPTOR_STRING = "amqp:open:list"; + + public final static Factory FACTORY = new Factory(); + + private String _containerId; + + private String _hostname; + + private int _maxFrameSize = 0xffffffff; + + private int _channelMax = 65535; + + private long _idleTimeOut; + + private String[] _outgoingLocales; + + private String[] _incomingLocales; + + private String[] _offeredCapabilities; + + private String[] _desiredCapabilities; + + private Map<String, Object> _properties; + + public String getContainerId() + { + return _containerId; + } + + public void setContainerId(String containerId) + { + if (containerId == null) + { + throw new NullPointerException("the container-id field is mandatory"); + } + + _containerId = containerId; + } + + public String getHostname() + { + return _hostname; + } + + public void setHostname(String hostname) + { + _hostname = hostname; + } + + public int getMaxFrameSize() + { + return _maxFrameSize; + } + + public void setMaxFrameSize(int maxFrameSize) + { + _maxFrameSize = maxFrameSize; + } + + public int getChannelMax() + { + return _channelMax; + } + + public void setChannelMax(int channelMax) + { + _channelMax = channelMax; + } + + public long getIdleTimeOut() + { + return _idleTimeOut; + } + + public void setIdleTimeOut(long idleTimeOut) + { + _idleTimeOut = idleTimeOut; + } + + public String[] getOutgoingLocales() + { + return _outgoingLocales; + } + + public void setOutgoingLocales(String... outgoingLocales) + { + _outgoingLocales = outgoingLocales; + } + + public String[] getIncomingLocales() + { + return _incomingLocales; + } + + public void setIncomingLocales(String... incomingLocales) + { + _incomingLocales = incomingLocales; + } + + public String[] getOfferedCapabilities() + { + return _offeredCapabilities; + } + + public void setOfferedCapabilities(String... offeredCapabilities) + { + _offeredCapabilities = offeredCapabilities; + } + + public String[] getDesiredCapabilities() + { + return _desiredCapabilities; + } + + public void setDesiredCapabilities(String... desiredCapabilities) + { + _desiredCapabilities = desiredCapabilities; + } + + public Map<String, Object> getProperties() + { + return _properties; + } + + public void setProperties(Map<String, Object> properties) + { + _properties = properties; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putString(_containerId); + encoder.putString(_hostname); + encoder.putUint(_maxFrameSize); + encoder.putUshort(_channelMax); + encoder.putLong(_idleTimeOut); + CodecHelper.encodeSymbolArray(encoder, _outgoingLocales); + CodecHelper.encodeSymbolArray(encoder, _incomingLocales); + CodecHelper.encodeSymbolArray(encoder, _offeredCapabilities); + CodecHelper.encodeSymbolArray(encoder, _desiredCapabilities); + CodecHelper.encodeMapWithKeyAsSymbol(encoder, _properties); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + + Open open = new Open(); + + switch (10 - l.size()) + { + case 0: + open.setProperties((Map<String, Object>) l.get(9)); + case 1: + Object val1 = l.get(8); + if (val1 == null || val1.getClass().isArray()) + { + open.setDesiredCapabilities((String[]) val1); + } + else + { + open.setDesiredCapabilities((String) val1); + } + case 2: + Object val2 = l.get(7); + if (val2 == null || val2.getClass().isArray()) + { + open.setOfferedCapabilities((String[]) val2); + } + else + { + open.setOfferedCapabilities((String) val2); + } + case 3: + Object val3 = l.get(6); + if (val3 == null || val3.getClass().isArray()) + { + open.setIncomingLocales((String[]) val3); + } + else + { + open.setIncomingLocales((String) val3); + } + case 4: + Object val4 = l.get(5); + if (val4 == null || val4.getClass().isArray()) + { + open.setOutgoingLocales((String[]) val4); + } + else + { + open.setOutgoingLocales((String) val4); + } + case 5: + open.setIdleTimeOut((Long) l.get(4)); + case 6: + open.setChannelMax(l.get(3) == null ? 65535 : (Integer) l.get(3)); + case 7: + open.setMaxFrameSize(l.get(2) == null ? Integer.MAX_VALUE : (Integer) l.get(2)); + case 8: + open.setHostname((String) l.get(1)); + case 9: + open.setContainerId((String) l.get(0)); + } + + return open; + } + } + + @Override + public String toString() + { + return "Open{" + + " containerId='" + _containerId + '\'' + + ", hostname='" + _hostname + '\'' + + ", maxFrameSize=" + _maxFrameSize + + ", channelMax=" + _channelMax + + ", idleTimeOut=" + _idleTimeOut + + ", outgoingLocales=" + (_outgoingLocales == null ? null : Arrays.asList(_outgoingLocales)) + + ", incomingLocales=" + (_incomingLocales == null ? null : Arrays.asList(_incomingLocales)) + + ", offeredCapabilities=" + (_offeredCapabilities == null ? null : Arrays.asList(_offeredCapabilities)) + + ", desiredCapabilities=" + (_desiredCapabilities == null ? null : Arrays.asList(_desiredCapabilities)) + + ", properties=" + _properties + + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Outcome.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Outcome.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Outcome.java new file mode 100644 index 0000000..e54a256 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Outcome.java @@ -0,0 +1,28 @@ +package org.apache.qpid.proton.transport2; + +import org.apache.qpid.proton.codec2.Encodable; + +/* + * + * 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. + * + */ + +public interface Outcome extends Encodable +{ +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/ReceiverSettleMode.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/ReceiverSettleMode.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/ReceiverSettleMode.java new file mode 100644 index 0000000..5688f11 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/ReceiverSettleMode.java @@ -0,0 +1,33 @@ +/* + * + * 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.qpid.proton.transport2; + +public enum ReceiverSettleMode +{ + FIRST, SECOND; + + public byte getValue() + { + return (byte) ordinal(); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Role.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Role.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Role.java new file mode 100644 index 0000000..ba9a878 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Role.java @@ -0,0 +1,32 @@ +/* + * + * 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.qpid.proton.transport2; + +public enum Role +{ + SENDER, RECEIVER; + + public boolean getValue() + { + return this == RECEIVER; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/SenderSettleMode.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/SenderSettleMode.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/SenderSettleMode.java new file mode 100644 index 0000000..b3fb8f8 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/SenderSettleMode.java @@ -0,0 +1,33 @@ +/* + * + * 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.qpid.proton.transport2; + +public enum SenderSettleMode +{ + UNSETTLED, SETTLED, MIXED; + + public byte getValue() + { + return (byte) ordinal(); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Source.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Source.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Source.java new file mode 100644 index 0000000..84b36c8 --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Source.java @@ -0,0 +1,185 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; +import org.apache.qpid.proton.message2.Accepted.Factory; + +public final class Source extends Terminus implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000028L; + + public final static String DESCRIPTOR_STRING = "amqp:source:list"; + + public final static Factory FACTORY = new Factory(); + + private String _distributionMode; + + private Map<Object, Object> _filter; + + private Outcome _defaultOutcome; + + private String[] _outcomes; + + public String getDistributionMode() + { + return _distributionMode; + } + + public void setDistributionMode(String distributionMode) + { + _distributionMode = distributionMode; + } + + public Map<Object, Object> getFilter() + { + return _filter; + } + + public void setFilter(Map<Object, Object> filter) + { + _filter = filter; + } + + public Outcome getDefaultOutcome() + { + return _defaultOutcome; + } + + public void setDefaultOutcome(Outcome defaultOutcome) + { + _defaultOutcome = defaultOutcome; + } + + public String[] getOutcomes() + { + return _outcomes; + } + + public void setOutcomes(String... outcomes) + { + _outcomes = outcomes; + } + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putString(_address); + encoder.putByte(_durable.getValue()); + encoder.putSymbol(_expiryPolicy.getPolicy()); + encoder.putLong(_timeout); + encoder.putBoolean(_dynamic); + CodecHelper.encodeMap(encoder, _dynamicNodeProperties); + encoder.putSymbol(_distributionMode); + CodecHelper.encodeMap(encoder, _filter); + if (_defaultOutcome == null) + { + encoder.putNull(); + } + else + { + _defaultOutcome.encode(encoder); + } + CodecHelper.encodeSymbolArray(encoder, _outcomes); + CodecHelper.encodeSymbolArray(encoder, _capabilities); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + + Source source = new Source(); + + switch (11 - l.size()) + { + + case 0: + Object val0 = l.get(10); + if (val0 == null || val0.getClass().isArray()) + { + source.setCapabilities((String[]) val0); + } + else + { + source.setCapabilities((String) val0); + } + case 1: + Object val1 = l.get(9); + if (val1 == null || val1.getClass().isArray()) + { + source.setOutcomes((String[]) val1); + } + else + { + source.setOutcomes((String) val1); + } + case 2: + source.setDefaultOutcome((Outcome) l.get(8)); + case 3: + source.setFilter((Map<Object, Object>) l.get(7)); + case 4: + source.setDistributionMode((String) l.get(6)); + case 5: + source.setDynamicNodeProperties((Map<Object, Object>) l.get(5)); + case 6: + Boolean dynamic = (Boolean) l.get(4); + source.setDynamic(dynamic == null ? false : dynamic); + case 7: + source.setTimeout(l.get(3) == null ? 0 : (Long) l.get(3)); + case 8: + source.setExpiryPolicy(l.get(2) == null ? TerminusExpiryPolicy.SESSION_END : TerminusExpiryPolicy + .getEnum((String) l.get(2))); + case 9: + source.setDurable(l.get(1) == null ? TerminusDurability.NONE : TerminusDurability.get((Byte) l.get(1))); + case 10: + source.setAddress((String) l.get(0)); + } + + return source; + } + } + + @Override + public String toString() + { + return "Source{" + "address='" + getAddress() + '\'' + ", durable=" + getDurable() + ", expiryPolicy=" + + getExpiryPolicy() + ", timeout=" + getTimeout() + ", dynamic=" + getDynamic() + + ", dynamicNodeProperties=" + getDynamicNodeProperties() + ", distributionMode=" + _distributionMode + + ", filter=" + _filter + ", defaultOutcome=" + _defaultOutcome + ", outcomes=" + + (_outcomes == null ? null : Arrays.asList(_outcomes)) + ", capabilities=" + + (getCapabilities() == null ? null : Arrays.asList(getCapabilities())) + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Target.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Target.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Target.java new file mode 100644 index 0000000..92401dd --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Target.java @@ -0,0 +1,112 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import org.apache.qpid.proton.codec2.CodecHelper; +import org.apache.qpid.proton.codec2.DecodeException; +import org.apache.qpid.proton.codec2.DescribedTypeFactory; +import org.apache.qpid.proton.codec2.Encodable; +import org.apache.qpid.proton.codec2.Encoder; +import org.apache.qpid.proton.message2.Accepted.Factory; + +public final class Target extends Terminus implements Encodable +{ + public final static long DESCRIPTOR_LONG = 0x0000000000000029L; + + public final static String DESCRIPTOR_STRING = "amqp:target:list"; + + public final static Factory FACTORY = new Factory(); + + @Override + public void encode(Encoder encoder) + { + encoder.putDescriptor(); + encoder.putUlong(DESCRIPTOR_LONG); + encoder.putList(); + encoder.putString(_address); + encoder.putByte(_durable.getValue()); + encoder.putSymbol(_expiryPolicy.getPolicy()); + encoder.putLong(_timeout); + encoder.putBoolean(_dynamic); + CodecHelper.encodeMap(encoder, _dynamicNodeProperties); + CodecHelper.encodeSymbolArray(encoder, _capabilities); + encoder.end(); + } + + public static final class Factory implements DescribedTypeFactory + { + @SuppressWarnings("unchecked") + public Object create(Object in) throws DecodeException + { + List<Object> l = (List<Object>) in; + + Target target = new Target(); + + switch (7 - l.size()) + { + + case 0: + Object val0 = l.get(6); + if (val0 == null || val0.getClass().isArray()) + { + target.setCapabilities((String[]) val0); + } + else + { + target.setCapabilities((String) val0); + } + case 1: + target.setDynamicNodeProperties((Map<Object, Object>) l.get(5)); + case 2: + target.setDynamic(l.get(4) == null ? false : (Boolean) l.get(4)); + case 3: + target.setTimeout(l.get(3) == null ? 0 : (Integer) l.get(3)); + case 4: + target.setExpiryPolicy(l.get(2) == null ? TerminusExpiryPolicy.SESSION_END : TerminusExpiryPolicy + .getEnum((String) l.get(2))); + case 5: + target.setDurable(l.get(1) == null ? TerminusDurability.NONE : TerminusDurability.get((Byte) l.get(1))); + case 6: + target.setAddress((String) l.get(0)); + } + return target; + } + } + + @Override + public String toString() + { + return "Target{" + + "address='" + getAddress() + '\'' + + ", durable=" + getDurable() + + ", expiryPolicy=" + getExpiryPolicy() + + ", timeout=" + getTimeout() + + ", dynamic=" + getDynamic() + + ", dynamicNodeProperties=" + getDynamicNodeProperties() + + ", capabilities=" + (getCapabilities() == null ? null : Arrays.asList(getCapabilities())) + + '}'; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/Terminus.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/Terminus.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Terminus.java new file mode 100644 index 0000000..c1162cc --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/Terminus.java @@ -0,0 +1,114 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.Map; + +public abstract class Terminus +{ + protected String _address; + + protected TerminusDurability _durable = TerminusDurability.NONE; + + protected TerminusExpiryPolicy _expiryPolicy = TerminusExpiryPolicy.SESSION_END; + + protected long _timeout = 0; + + protected boolean _dynamic; + + protected Map<Object, Object> _dynamicNodeProperties; + + protected String[] _capabilities; + + Terminus() + { + } + + public final String getAddress() + { + return _address; + } + + public final void setAddress(String address) + { + _address = address; + } + + public final TerminusDurability getDurable() + { + return _durable; + } + + public final void setDurable(TerminusDurability durable) + { + _durable = durable == null ? TerminusDurability.NONE : durable; + } + + public final TerminusExpiryPolicy getExpiryPolicy() + { + return _expiryPolicy; + } + + public final void setExpiryPolicy(TerminusExpiryPolicy expiryPolicy) + { + _expiryPolicy = expiryPolicy == null ? TerminusExpiryPolicy.SESSION_END : expiryPolicy; + } + + public final long getTimeout() + { + return _timeout; + } + + public final void setTimeout(long timeout) + { + _timeout = timeout; + } + + public final boolean getDynamic() + { + return _dynamic; + } + + public final void setDynamic(boolean dynamic) + { + _dynamic = dynamic; + } + + public final Map<Object, Object> getDynamicNodeProperties() + { + return _dynamicNodeProperties; + } + + public final void setDynamicNodeProperties(Map<Object, Object> dynamicNodeProperties) + { + _dynamicNodeProperties = dynamicNodeProperties; + } + + public final String[] getCapabilities() + { + return _capabilities; + } + + public final void setCapabilities(String... capabilities) + { + _capabilities = capabilities; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusDurability.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusDurability.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusDurability.java new file mode 100644 index 0000000..437c73d --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusDurability.java @@ -0,0 +1,49 @@ +/* + * + * 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.qpid.proton.transport2; + + +public enum TerminusDurability +{ + NONE, CONFIGURATION, UNSETTLED_STATE; + + public byte getValue() + { + return (byte) ordinal(); + } + + public static TerminusDurability get(byte value) + { + + switch (value) + { + case 0: + return NONE; + case 1: + return CONFIGURATION; + case 2: + return UNSETTLED_STATE; + } + throw new IllegalArgumentException("Unknown TerminusDurablity: " + value); + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/d12a126e/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusExpiryPolicy.java ---------------------------------------------------------------------- diff --git a/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusExpiryPolicy.java b/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusExpiryPolicy.java new file mode 100644 index 0000000..4b56b6b --- /dev/null +++ b/proton-j/src/main/java/org/apache/qpid/proton/transport2/TerminusExpiryPolicy.java @@ -0,0 +1,62 @@ +/* + * + * 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.qpid.proton.transport2; + +import java.util.HashMap; +import java.util.Map; + +public enum TerminusExpiryPolicy +{ + LINK_DETACH("link-detach"), SESSION_END("session-end"), CONNECTION_CLOSE("connection-close"), NEVER("never"); + + private String _policy; + + private static final Map<String, TerminusExpiryPolicy> _map = new HashMap<String, TerminusExpiryPolicy>(); + + TerminusExpiryPolicy(String policy) + { + _policy = policy; + } + + public String getPolicy() + { + return _policy; + } + + static + { + _map.put(LINK_DETACH.getPolicy(), LINK_DETACH); + _map.put(SESSION_END.getPolicy(), SESSION_END); + _map.put(CONNECTION_CLOSE.getPolicy(), CONNECTION_CLOSE); + _map.put(NEVER.getPolicy(), NEVER); + } + + public static TerminusExpiryPolicy getEnum(String policy) + { + TerminusExpiryPolicy expiryPolicy = _map.get(policy); + if (expiryPolicy == null) + { + throw new IllegalArgumentException("Unknown TerminusExpiryPolicy: " + policy); + } + return expiryPolicy; + } +} \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
