2 * Copyright 2011 BitMeister Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package jp.bitmeister.asn1.type.builtin;
18 import java.util.ArrayList;
19 import java.util.Collection;
21 import jp.bitmeister.asn1.annotation.ASN1BuiltIn;
22 import jp.bitmeister.asn1.annotation.ASN1Identifier;
23 import jp.bitmeister.asn1.annotation.ASN1Tag;
24 import jp.bitmeister.asn1.annotation.ASN1XmlTypeName;
25 import jp.bitmeister.asn1.processor.ASN1Visitor;
26 import jp.bitmeister.asn1.type.ASN1TagClass;
27 import jp.bitmeister.asn1.type.ASN1TagMode;
28 import jp.bitmeister.asn1.type.ASN1Type;
29 import jp.bitmeister.asn1.type.CollectionType;
32 * Represents ASN.1 'SEQUENCE OF' type.
35 * This is the class used for defining 'SEQUENCE OF' types. Generic type
36 * parameter {@code T} indicates component type of the 'SEQUENCE OF' type.
37 * Constructors of a sub-class of {@code SEQUENCE_OF} must call parent constructor
38 * with {@code componentType} parameter that is the class object of {@code T} in
42 * @author WATANABE, Jun. <jwat at bitmeister.jp>
45 @ASN1Identifier("SEQUENCE")
46 @ASN1XmlTypeName("SEQUENCE_OF")
47 @ASN1Tag(tagClass = ASN1TagClass.UNIVERSAL, value = 16, tagMode = ASN1TagMode.IMPLICIT)
48 public abstract class SEQUENCE_OF<T extends ASN1Type> extends CollectionType<T> {
51 * Instantiate an empty {@code SEQUENCE_OF}.
53 * @param componentType
54 * The class instance of component type.
56 public SEQUENCE_OF(Class<T> componentType) {
63 * @see jp.bitmeister.asn1.type.CollectionType#newCollection()
66 protected Collection<T> newCollection() {
67 return new ArrayList<T>();
74 * jp.bitmeister.asn1.type.ASN1Type#accept(jp.bitmeister.asn1.processor.
78 public <R, E extends Throwable> R accept(ASN1Visitor<R, E> visitor) throws E {
79 return visitor.visit(this);