public void RegisterXMLNewType( EventTypeMetadata metadata, ConfigurationCommonEventTypeXMLDOM config) { SchemaModel schemaModel = null; if ((config.SchemaResource != null) || (config.SchemaText != null)) { try { schemaModel = XSDSchemaMapper.LoadAndMap( config.SchemaResource, config.SchemaText, _container.ResourceManager()); } catch (Exception ex) { throw new EPException(ex.Message, ex); } } EventType eventType = _eventTypeFactory.CreateXMLType( metadata, config, schemaModel, null, metadata.Name, _beanEventTypeFactory, _xmlFragmentEventTypeFactory, _eventTypeNameResolver); HandleRegister(eventType); if (eventType is SchemaXMLEventType) { _xmlFragmentEventTypeFactory.AddRootType((SchemaXMLEventType) eventType); } }
private static void AddXMLDOMType( EventTypeRepositoryImpl repo, string eventTypeName, ConfigurationCommonEventTypeXMLDOM detail, SchemaModel schemaModel, BeanEventTypeFactory beanEventTypeFactory, XMLFragmentEventTypeFactory xmlFragmentEventTypeFactory) { if (detail.RootElementName == null) { throw new EventAdapterException("Required root element name has not been supplied"); } var existingType = repo.GetTypeByName(eventTypeName); if (existingType != null) { var message = "Event type named '" + eventTypeName + "' has already been declared with differing column name or type information"; throw new ConfigurationException(message); } var propertyAgnostic = detail.SchemaResource == null && detail.SchemaText == null; var metadata = new EventTypeMetadata( eventTypeName, null, EventTypeTypeClass.STREAM, EventTypeApplicationType.XML, NameAccessModifier.PRECONFIGURED, EventTypeBusModifier.BUS, propertyAgnostic, new EventTypeIdPair(CRC32Util.ComputeCRC32(eventTypeName), -1)); var type = beanEventTypeFactory.EventTypeFactory.CreateXMLType( metadata, detail, schemaModel, null, metadata.Name, beanEventTypeFactory, xmlFragmentEventTypeFactory, repo); repo.AddType(type); if (type is SchemaXMLEventType) { xmlFragmentEventTypeFactory.AddRootType((SchemaXMLEventType) type); } }