@Override public void destroyDynaContext(DynaOrmContext context) { OrmContext registered = registry.findContext(context.getName()); if(registered == context) { registry.removeContext(context.getName()); } }
protected static OrmContext getContext(String name,boolean primary){ OrmRegistry registry = AppContext.factory().getBean(OrmRegistry.class); OrmContext context = primary ? registry.getDefaultContext() : null; if(null != context) { return context; } return registry.getContext(name); }
@Override public DynaOrmContext createDynaContext(String name, DataSource ds, boolean register) throws ObjectExistsException { if(!register) { return createDynaContext(name, ds); } DynaOrmContext context = createDynaContext(name, ds); if(registry.findContext(name) != null) { //registry.removeContext(name); throw new ObjectExistsException("The context '" + name + "' already exists in registry!"); } registry.registerContext(context); return context; }
api.setDataSourceName(dataSourceName); } else if (!Strings.isEmpty(dbType) || !Strings.isEmpty(jdbcUrl)) { OrmContext ormContext = ormRegistry.getDefaultContext(); if (null != ormContext) { throw new IllegalStateException("A db '" + ormContext.getDb().getDataSourceDescription() + "' already exists, please check your config!"); } else if (!ormRegistry.isEmpty()) { log.info("Use default dataSource '{}'", ormRegistry.getDefaultContext().getName()); api.setDataSourceName(ormRegistry.getDefaultContext().getName()); } else {
Db db; if(!Strings.isEmpty(api.getDataSourceName())) { db = ormRegistry.getContext(api.getDataSourceName()).getDb(); }else { log.info("Create dataSource before generating from database!");
@Override public DynaOrmContext existDynaContext(String name) { DynaOrmContext registered =(DynaOrmContext) registry.findContext(name); return registered; }
public static boolean hasContexts() { return !AppContext.factory().getBean(OrmRegistry.class).isEmpty(); }
/** * Register a {@link OrmContext}. * * @throws ObjectExistsException if a context with the same name already exists. */ void registerContext(OrmContext context, boolean _default) throws ObjectExistsException;
public static OrmContext context(Class<?> entityClass) { OrmRegistry registry = AppContext.factory().getBean(OrmRegistry.class); for(OrmContext context : registry.contexts()) { if(context.getMetadata().tryGetEntityMapping(entityClass) != null) { return context; } } throw new IllegalStateException("Orm context not found for entity class '" + entityClass + "'"); }
if(!Strings.isEmpty(meta.getDataSourceName())) { useSystemDataSource = true; current.setOrmContext(ormRegistry.getContext(meta.getDataSourceName())); current.setDb(current.getOrmContext().getDb());
protected OrmContext lookupOrmContext(RestdConfig c) { OrmContext oc = c.getOrmContext(); if(null == oc) { String dataSourceName = Strings.firstNotEmpty(c.getDataSourceName(), DataSourceManager.DEFAULT_DATASOURCE_NAME); oc = ormRegistry.findContext(dataSourceName); if (null == oc) { throw new ApiConfigException("Can't create restd api , orm context '" + dataSourceName + "' has not been registered!"); } } return oc; }
registry.registerContext(oc, bd.isPrimary()); aliases.forEach(alias -> registry.registerContext(oc, alias));
public void start() { configSupport.load(); MetaApi api = new MetaApi(); apiReader.read(api); readFormats(api); readDomains(api); readOptions(api); readEntities(api); readSqls(api); OrmRuntime runtime = new OrmRuntime(); OrmRuntime.setCurrent(runtime); if(null == api.getDataSource()) { if(!Strings.isEmpty(api.getDataSourceName())) { runtime.setContext(ormRegistry.getContext(api.getDataSourceName())); ormContextFactory.createOrmEntities(null, runtime.getContext(), api); } }else { DataSource ds = dataSourceFactory.createDataSource(api.getDataSource()); Db db = DbFactory.createInstance(ds); runtime.setContext(ormContextFactory.createOrmContext(db, api)); } //migrate OrmContext context = runtime.getContext(); if(null != context && api.isMigrateDatabase()) { dbMigrator.migrate(api, context); } }