public virtual Net.Vpc.Upa.PersistenceUnit AddPersistenceUnit(string name) /* throws Net.Vpc.Upa.Exceptions.UPAException */ { if (name == null) { name = ""; } Net.Vpc.Upa.PersistenceUnit persistenceUnit = GetFactory().CreateObject <Net.Vpc.Upa.PersistenceUnit>(typeof(Net.Vpc.Upa.PersistenceUnit)); // persistenceUnit.setName(name); // persistenceUnit.setPersistenceGroup(this); persistenceUnit.Init(name, this); lock (persistenceUnits) { if (persistenceUnits.ContainsKey(name)) { throw new Net.Vpc.Upa.Exceptions.PersistenceUnitAlreadyExistsException(name); } listeners.FireOnCreatePersistenceUnit(new Net.Vpc.Upa.Callbacks.PersistenceUnitEvent(persistenceUnit, this, Net.Vpc.Upa.EventPhase.BEFORE)); persistenceUnits[name] = persistenceUnit; Net.Vpc.Upa.PersistenceUnit oldPersistenceUnit = GetPersistenceUnitProvider().GetPersistenceUnit(this); if (oldPersistenceUnit == null) { SetPersistenceUnit(persistenceUnit.GetName()); } listeners.FireOnCreatePersistenceUnit(new Net.Vpc.Upa.Callbacks.PersistenceUnitEvent(persistenceUnit, this, Net.Vpc.Upa.EventPhase.AFTER)); } log.TraceEvent(System.Diagnostics.TraceEventType.Verbose, 60, Net.Vpc.Upa.Impl.FwkConvertUtils.LogMessageExceptionFormatter("Create PersistenceUnit {0}/{1}", null, new object[] { GetName(), persistenceUnit.GetName() })); return(persistenceUnit); }