private Resource toResource(final DataSource datasource) {
final String name = cleanUpName(datasource.getName());
final Resource def = new Resource(name, javax.sql.DataSource.class.getName());
def.setJndi(datasource.getName().replaceFirst("java:", ""));
def.setType("javax.sql.DataSource");
final Properties p = def.getProperties();
put(p, "JtaManaged", datasource.getTransactional());
put(p, "InitialSize", datasource.getInitialPoolSize());
put(p, "DefaultIsolationLevel", datasource.getIsolationLevel());
put(p, "LoginTimeout", datasource.getLoginTimeout());
put(p, "MinEvictableIdleTimeMillis", datasource.getMaxIdleTime());
put(p, "MaxIdle", datasource.getMaxPoolSize());
put(p, "MinIdle", datasource.getMinPoolSize());
put(p, "MaxStatements", datasource.getMaxStatements());
put(p, "Password", datasource.getPassword());
put(p, "JdbcUrl", datasource.getUrl());
put(p, "UserName", datasource.getUser());
put(p, "JdbcDriver", datasource.getClassName());
put(p, "PortNumber", datasource.getPortNumber());
put(p, "DatabaseName", datasource.getDatabaseName());
put(p, "Description", datasource.getDescription());
put(p, "ServerName", datasource.getServerName());
put(p, "Definition", rawDefinition(datasource));
put(p, AutoConfig.ORIGIN_FLAG, AutoConfig.ORIGIN_ANNOTATION);
setProperties(datasource, p);
put(p, "JndiName", def.getJndi());
return def;
}