1/* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18/** 19* @author Vladimir N. Molotkov, Stepan M. Mishura 20* @version $Revision$ 21*/ 22 23package org.apache.harmony.security.asn1; 24 25import java.io.IOException; 26import java.util.Arrays; 27import java.util.Collection; 28import java.util.List; 29 30 31/** 32 * This class represents ASN.1 SetOf type. 33 * 34 * @see <a href="http://asn1.elibel.tm.fr/en/standards/index.htm">ASN.1</a> 35 */ 36 37public class ASN1SetOf extends ASN1ValueCollection { 38 39 public ASN1SetOf(ASN1Type type) { 40 super(TAG_SETOF, type); 41 } 42 43 // 44 // 45 // Decode 46 // 47 48 public Object decode(BerInputStream in) throws IOException { 49 in.readSetOf(this); 50 51 if (in.isVerify) { 52 return null; 53 } 54 return getDecodedObject(in); 55 } 56 57 // 58 // 59 // Encode 60 // 61 // 62 public final void encodeContent(BerOutputStream out) { 63 out.encodeSetOf(this); 64 } 65 66 public final void setEncodingContent(BerOutputStream out) { 67 out.getSetOfLength(this); 68 } 69 70 /** 71 * Creates array wrapper of provided ASN1 type 72 * 73 * @param type - ASN1 type to be wrapped 74 * @return - a wrapper for ASN1 set of type. 75 * @throws IOException 76 * @see org.apache.harmony.security.asn1.ASN1ValueCollection 77 */ 78 public static ASN1SetOf asArrayOf(ASN1Type type) throws IOException { 79 80 return new ASN1SetOf(type) { 81 public Object getDecodedObject(BerInputStream in) 82 throws IOException { 83 return ((List) in.content).toArray(); 84 } 85 86 public Collection getValues(Object object) { 87 return Arrays.asList((Object[]) object); 88 } 89 }; 90 } 91} 92 93