1 26 27 package org.objectweb.openccm.corba.trader; 28 29 import org.objectweb.openccm.corba.trader.parser.Service; 31 import org.objectweb.openccm.corba.trader.TraderTypeCodeUtils; 32 import org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropertyMode; 33 34 37 public class ServiceTypeActions { 38 39 45 46 org.omg.CosTradingRepos.ServiceTypeRepository repos_; 47 48 54 57 public 58 ServiceTypeActions (org.omg.CosTradingRepos.ServiceTypeRepository repos) 59 { 60 repos_ = repos; 61 } 62 63 69 81 private String 82 convertSequence(String typeCodeId) 83 { 84 if (! typeCodeId.endsWith("Seq") && 85 ! typeCodeId.startsWith("unsigned")) return typeCodeId; 86 if (typeCodeId.startsWith("unsigned_long")) return "unsigned long"; 87 if (typeCodeId.startsWith("unsigned_short")) return "unsigned short"; 88 if (typeCodeId.startsWith("String")) return "sequence<string>"; 89 if (typeCodeId.startsWith("Long")) return "sequence<long>"; 90 if (typeCodeId.startsWith("ULong")) return "sequence<unsigned long>"; 91 if (typeCodeId.startsWith("Short")) return "sequence<short>"; 92 if (typeCodeId.startsWith("UShort")) return "sequence<unsigned short>"; 93 if (typeCodeId.startsWith("Double")) return "sequence<double>"; 94 if (typeCodeId.startsWith("Float")) return "sequence<float>"; 95 if (typeCodeId.startsWith("Boolean")) return "sequence<boolean>"; 96 if (typeCodeId.startsWith("Octet")) return "sequence<octet>"; 97 if (typeCodeId.startsWith("Char")) return "sequence<char>"; 98 return typeCodeId; 99 } 100 101 112 protected PropertyMode 113 getPropertyMode(String mode_name) { 114 if (mode_name.startsWith("mandatory_readonly")) 115 return PropertyMode.PROP_MANDATORY_READONLY; 116 if (mode_name.startsWith("mandatory")) 117 return PropertyMode.PROP_MANDATORY; 118 if (mode_name.startsWith("readonly")) 119 return PropertyMode.PROP_READONLY; 120 return PropertyMode.PROP_NORMAL; 122 } 123 124 130 139 public org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.IncarnationNumber 140 create_service(Service desc) 141 throws org.omg.CosTrading.IllegalServiceType, 142 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.ServiceTypeExists, 143 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.InterfaceTypeMismatch, 144 org.omg.CosTrading.IllegalPropertyName, 145 org.omg.CosTrading.DuplicatePropertyName, 146 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.ValueTypeRedefinition, 147 org.omg.CosTrading.UnknownServiceType, 148 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.DuplicateServiceTypeName 149 { 150 java.util.List superTypesList = desc.getSuperTypeList(); 152 String [] superTypes = new String [superTypesList.size()]; 153 int i = 0; 154 for (java.util.Iterator iter = superTypesList.iterator(); 155 iter.hasNext() ; i++) 156 { 157 org.objectweb.openccm.corba.trader.parser.SuperType st; 158 st = (org.objectweb.openccm.corba.trader.parser.SuperType)iter.next(); 159 superTypes[i] = st.getName(); 160 } 161 162 java.util.List properties = desc.getPropertyList(); 164 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropStruct[] props; 165 props = new org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropStruct[properties.size()]; 166 i = 0; 167 for (java.util.Iterator iter = properties.iterator(); 168 iter.hasNext() ; i++) 169 { 170 org.objectweb.openccm.corba.trader.parser.Property prop; 171 prop = (org.objectweb.openccm.corba.trader.parser.Property)iter.next(); 172 org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropStruct cos_prop; 173 cos_prop = new org.omg.CosTradingRepos.ServiceTypeRepositoryPackage.PropStruct(); 174 cos_prop.name = prop.getName(); 175 cos_prop.value_type = TraderTypeCodeUtils.getTypeCode(convertSequence(prop.getType())); 176 cos_prop.mode = getPropertyMode(prop.getMode()); 177 props[i] = cos_prop; 178 } 179 180 return repos_.add_type(desc.getName(), 181 desc.getXmlinterface().getName(), 182 props, superTypes); 183 } 184 } 185 | Popular Tags |