summaryrefslogtreecommitdiff
path: root/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java')
-rw-r--r--qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java382
1 files changed, 191 insertions, 191 deletions
diff --git a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java
index fc4fcdf9ee..28bf1a577c 100644
--- a/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java
+++ b/qpid/java/amqp-1-0-common/src/main/java/org/apache/qpid/amqp_1_0/codec/CompoundTypeConstructor.java
@@ -1,192 +1,192 @@
-/*
- *
- * 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.amqp_1_0.codec;
-
-import org.apache.qpid.amqp_1_0.type.*;
-import org.apache.qpid.amqp_1_0.type.transport.*;
-import org.apache.qpid.amqp_1_0.type.transport.Error;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Formatter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class CompoundTypeConstructor extends VariableWidthTypeConstructor
-{
- private final CompoundTypeAssembler.Factory _assemblerFactory;
-
- public static final CompoundTypeAssembler.Factory LIST_ASSEMBLER_FACTORY =
- new CompoundTypeAssembler.Factory()
- {
-
- public CompoundTypeAssembler newInstance()
- {
- return new ListAssembler();
- }
- };
-
-
-
- private static class ListAssembler implements CompoundTypeAssembler
- {
- private List _list;
-
- public void init(final int count) throws AmqpErrorException
- {
- _list = new ArrayList(count);
- }
-
- public void addItem(final Object obj) throws AmqpErrorException
- {
- _list.add(obj);
- }
-
- public Object complete() throws AmqpErrorException
- {
- return _list;
- }
-
- @Override
- public String toString()
- {
- return "ListAssembler{" +
- "_list=" + _list +
- '}';
- }
- }
-
-
- public static final CompoundTypeAssembler.Factory MAP_ASSEMBLER_FACTORY =
- new CompoundTypeAssembler.Factory()
- {
-
- public CompoundTypeAssembler newInstance()
- {
- return new MapAssembler();
- }
- };
-
- private static class MapAssembler implements CompoundTypeAssembler
- {
- private Map _map;
- private Object _lastKey;
- private static final Object NOT_A_KEY = new Object();
-
-
- public void init(final int count) throws AmqpErrorException
- {
- // Can't have an odd number of elements in a map
- if((count & 0x1) == 1)
- {
- Error error = new Error();
- error.setCondition(AmqpError.DECODE_ERROR);
- Formatter formatter = new Formatter();
- formatter.format("map cannot have odd number of elements: %d", count);
- error.setDescription(formatter.toString());
- throw new AmqpErrorException(error);
- }
- _map = new HashMap(count);
- _lastKey = NOT_A_KEY;
- }
-
- public void addItem(final Object obj) throws AmqpErrorException
- {
- if(_lastKey != NOT_A_KEY)
- {
- if(_map.put(_lastKey, obj) != null)
- {
- Error error = new Error();
- error.setCondition(AmqpError.DECODE_ERROR);
- Formatter formatter = new Formatter();
- formatter.format("map cannot have duplicate keys: %s has values (%s, %s)", _lastKey, _map.get(_lastKey), obj);
- error.setDescription(formatter.toString());
-
- throw new AmqpErrorException(error);
- }
- _lastKey = NOT_A_KEY;
- }
- else
- {
- _lastKey = obj;
- }
-
- }
-
- public Object complete() throws AmqpErrorException
- {
- return _map;
- }
- }
-
-
- public static CompoundTypeConstructor getInstance(int i,
- CompoundTypeAssembler.Factory assemblerFactory)
- {
- return new CompoundTypeConstructor(i, assemblerFactory);
- }
-
-
- private CompoundTypeConstructor(int size,
- final CompoundTypeAssembler.Factory assemblerFactory)
- {
- super(size);
- _assemblerFactory = assemblerFactory;
- }
-
- @Override
- public Object construct(final ByteBuffer in, boolean isCopy, ValueHandler delegate) throws AmqpErrorException
- {
- int size;
- int count;
-
- if(getSize() == 1)
- {
- size = in.get() & 0xFF;
- count = in.get() & 0xFF;
- }
- else
- {
- size = in.getInt();
- count = in.getInt();
- }
-
- ByteBuffer data;
- ByteBuffer inDup = in.slice();
-
- inDup.limit(size-getSize());
-
- CompoundTypeAssembler assembler = _assemblerFactory.newInstance();
-
- assembler.init(count);
-
- for(int i = 0; i < count; i++)
- {
- assembler.addItem(delegate.parse(in));
- }
-
- return assembler.complete();
-
- }
-
-
+/*
+ *
+ * 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.amqp_1_0.codec;
+
+import org.apache.qpid.amqp_1_0.type.*;
+import org.apache.qpid.amqp_1_0.type.transport.*;
+import org.apache.qpid.amqp_1_0.type.transport.Error;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Formatter;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class CompoundTypeConstructor extends VariableWidthTypeConstructor
+{
+ private final CompoundTypeAssembler.Factory _assemblerFactory;
+
+ public static final CompoundTypeAssembler.Factory LIST_ASSEMBLER_FACTORY =
+ new CompoundTypeAssembler.Factory()
+ {
+
+ public CompoundTypeAssembler newInstance()
+ {
+ return new ListAssembler();
+ }
+ };
+
+
+
+ private static class ListAssembler implements CompoundTypeAssembler
+ {
+ private List _list;
+
+ public void init(final int count) throws AmqpErrorException
+ {
+ _list = new ArrayList(count);
+ }
+
+ public void addItem(final Object obj) throws AmqpErrorException
+ {
+ _list.add(obj);
+ }
+
+ public Object complete() throws AmqpErrorException
+ {
+ return _list;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "ListAssembler{" +
+ "_list=" + _list +
+ '}';
+ }
+ }
+
+
+ public static final CompoundTypeAssembler.Factory MAP_ASSEMBLER_FACTORY =
+ new CompoundTypeAssembler.Factory()
+ {
+
+ public CompoundTypeAssembler newInstance()
+ {
+ return new MapAssembler();
+ }
+ };
+
+ private static class MapAssembler implements CompoundTypeAssembler
+ {
+ private Map _map;
+ private Object _lastKey;
+ private static final Object NOT_A_KEY = new Object();
+
+
+ public void init(final int count) throws AmqpErrorException
+ {
+ // Can't have an odd number of elements in a map
+ if((count & 0x1) == 1)
+ {
+ Error error = new Error();
+ error.setCondition(AmqpError.DECODE_ERROR);
+ Formatter formatter = new Formatter();
+ formatter.format("map cannot have odd number of elements: %d", count);
+ error.setDescription(formatter.toString());
+ throw new AmqpErrorException(error);
+ }
+ _map = new HashMap(count);
+ _lastKey = NOT_A_KEY;
+ }
+
+ public void addItem(final Object obj) throws AmqpErrorException
+ {
+ if(_lastKey != NOT_A_KEY)
+ {
+ if(_map.put(_lastKey, obj) != null)
+ {
+ Error error = new Error();
+ error.setCondition(AmqpError.DECODE_ERROR);
+ Formatter formatter = new Formatter();
+ formatter.format("map cannot have duplicate keys: %s has values (%s, %s)", _lastKey, _map.get(_lastKey), obj);
+ error.setDescription(formatter.toString());
+
+ throw new AmqpErrorException(error);
+ }
+ _lastKey = NOT_A_KEY;
+ }
+ else
+ {
+ _lastKey = obj;
+ }
+
+ }
+
+ public Object complete() throws AmqpErrorException
+ {
+ return _map;
+ }
+ }
+
+
+ public static CompoundTypeConstructor getInstance(int i,
+ CompoundTypeAssembler.Factory assemblerFactory)
+ {
+ return new CompoundTypeConstructor(i, assemblerFactory);
+ }
+
+
+ private CompoundTypeConstructor(int size,
+ final CompoundTypeAssembler.Factory assemblerFactory)
+ {
+ super(size);
+ _assemblerFactory = assemblerFactory;
+ }
+
+ @Override
+ public Object construct(final ByteBuffer in, boolean isCopy, ValueHandler delegate) throws AmqpErrorException
+ {
+ int size;
+ int count;
+
+ if(getSize() == 1)
+ {
+ size = in.get() & 0xFF;
+ count = in.get() & 0xFF;
+ }
+ else
+ {
+ size = in.getInt();
+ count = in.getInt();
+ }
+
+ ByteBuffer data;
+ ByteBuffer inDup = in.slice();
+
+ inDup.limit(size-getSize());
+
+ CompoundTypeAssembler assembler = _assemblerFactory.newInstance();
+
+ assembler.init(count);
+
+ for(int i = 0; i < count; i++)
+ {
+ assembler.addItem(delegate.parse(in));
+ }
+
+ return assembler.complete();
+
+ }
+
+
} \ No newline at end of file