1 package org.argeo.osgi.metatype; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.ArrayList; 6 import java.util.EnumSet; 7 import java.util.List; 8 9 import org.osgi.service.metatype.AttributeDefinition; 10 import org.osgi.service.metatype.ObjectClassDefinition; 11 12 public class EnumOCD<T extends Enum<T>> implements ObjectClassDefinition { 13 private final Class<T> enumClass; 14 private String locale; 15 16 public EnumOCD(Class<T> clazz, String locale) { 17 this.enumClass = clazz; 18 this.locale = locale; 19 } 20 21 @Override 22 public String getName() { 23 return null; 24 } 25 26 public String getLocale() { 27 return locale; 28 } 29 30 @Override 31 public String getID() { 32 return enumClass.getName(); 33 } 34 35 @Override 36 public String getDescription() { 37 return null; 38 } 39 40 @Override 41 public AttributeDefinition[] getAttributeDefinitions(int filter) { 42 EnumSet<T> set = EnumSet.allOf(enumClass); 43 List<AttributeDefinition> attrs = new ArrayList<>(); 44 for (T key : set) 45 attrs.add((AttributeDefinition) key); 46 return attrs.toArray(new AttributeDefinition[attrs.size()]); 47 } 48 49 @Override 50 public InputStream getIcon(int size) throws IOException { 51 return null; 52 } 53 54 }