Merge remote-tracking branch 'refs/remotes/origin/develop' into develop

Conflicts:
	ch.eitchnet.utils
This commit is contained in:
Robert von Burg 2015-01-15 09:09:59 +01:00
commit f236779697
14 changed files with 90 additions and 31 deletions

@ -1 +1 @@
Subproject commit fe1216eb12b41d052cb69d53a582992afa831c51 Subproject commit a67df72f3f9b795796896889c2dbe1cf8561ccd2

View File

@ -135,8 +135,6 @@ public class ComponentContainerImpl implements ComponentContainer {
componentMap.put(apiClass, strolchComponent); componentMap.put(apiClass, strolchComponent);
controllerMap.put(componentName, new ComponentController(strolchComponent)); controllerMap.put(componentName, new ComponentController(strolchComponent));
String msg = "Initialized component {0} with API {1} and impl {2}."; //$NON-NLS-1$
logger.info(MessageFormat.format(msg, componentName, api, impl));
} catch (NoSuchMethodException e) { } catch (NoSuchMethodException e) {

View File

@ -153,7 +153,8 @@ public class ComponentDependencyAnalyzer {
} }
String inset = StringHelper.normalizeLength(" ", depth * 2, false, ' '); //$NON-NLS-1$ String inset = StringHelper.normalizeLength(" ", depth * 2, false, ' '); //$NON-NLS-1$
for (ComponentController controller : components) { for (ComponentController controller : components) {
logger.info(inset + controller.getComponent().getName()); logger.info(inset + controller.getComponent().getName() + ": "
+ controller.getComponent().getClass().getName());
logDependencies(depth + 1, controller.getDownstreamDependencies()); logDependencies(depth + 1, controller.getDownstreamDependencies());
} }
} }

View File

@ -516,13 +516,16 @@ public abstract class AbstractTransaction implements StrolchTransaction {
sb.append(StringHelper.formatNanoDuration(txDuration)); sb.append(StringHelper.formatNanoDuration(txDuration));
sb.append(", close="); //$NON-NLS-1$ sb.append(", close="); //$NON-NLS-1$
sb.append(StringHelper.formatNanoDuration(closeDuration)); sb.append(StringHelper.formatNanoDuration(closeDuration));
if (isAuditTrailEnabled()) { if (isAuditTrailEnabled()) {
sb.append(", auditTrail="); //$NON-NLS-1$ sb.append(", auditTrail="); //$NON-NLS-1$
sb.append(StringHelper.formatNanoDuration(auditTrailDuration)); sb.append(StringHelper.formatNanoDuration(auditTrailDuration));
} }
if (observerUpdateDuration > 0L)
if (isObserverUpdatesEnabled()) {
sb.append(", updates="); //$NON-NLS-1$ sb.append(", updates="); //$NON-NLS-1$
sb.append(StringHelper.formatNanoDuration(observerUpdateDuration)); sb.append(StringHelper.formatNanoDuration(observerUpdateDuration));
}
logger.info(sb.toString()); logger.info(sb.toString());
} }

View File

@ -452,6 +452,10 @@ public class ConfigurationSaxParser extends DefaultHandler {
if (thisComponentBuilder == null) { if (thisComponentBuilder == null) {
this.componentBuilders.add(otherComponentBuilder); this.componentBuilders.add(otherComponentBuilder);
} else { } else {
if (StringHelper.isNotEmpty(otherComponentBuilder.getImpl())) {
thisComponentBuilder.setImpl(otherComponentBuilder.getImpl());
thisComponentBuilder.setDependencies(otherComponentBuilder.getDependencies());
}
thisComponentBuilder.getProperties().putAll(otherComponentBuilder.getProperties()); thisComponentBuilder.getProperties().putAll(otherComponentBuilder.getProperties());
} }
} }
@ -552,6 +556,10 @@ public class ConfigurationSaxParser extends DefaultHandler {
return this.dependencies; return this.dependencies;
} }
public void setDependencies(Set<String> dependencies) {
this.dependencies = dependencies;
}
public void addDependency(String dependency) { public void addDependency(String dependency) {
this.dependencies.add(dependency); this.dependencies.add(dependency);
} }

View File

@ -35,7 +35,7 @@ public class NameSelector<T extends StrolchElement> implements Selector<T> {
@Override @Override
public boolean select(T element) { public boolean select(T element) {
String name = element.getName(); String name = element.getName();
return this.matchMode.matches(this.name, name); return this.matchMode.matches(name, this.name);
} }
/** /**

View File

@ -78,6 +78,7 @@ public class ConfigurationParserTest {
assertEquals("li.strolch.runtime.privilege.DefaultStrolchPrivilegeHandler", assertEquals("li.strolch.runtime.privilege.DefaultStrolchPrivilegeHandler",
privilegeHandlerConfiguration.getImpl()); privilegeHandlerConfiguration.getImpl());
assertEquals(1, privilegeHandlerConfiguration.getPropertyKeys().size()); assertEquals(1, privilegeHandlerConfiguration.getPropertyKeys().size());
assertEquals(1, privilegeHandlerConfiguration.getDependencies().size());
assertTrue(privilegeHandlerConfiguration.getDependencies().contains("PersistenceHandler")); assertTrue(privilegeHandlerConfiguration.getDependencies().contains("PersistenceHandler"));
assertEquals("PrivilegeConfig.xml", privilegeHandlerConfiguration.getString("privilegeConfigFile", null)); assertEquals("PrivilegeConfig.xml", privilegeHandlerConfiguration.getString("privilegeConfigFile", null));
@ -178,5 +179,26 @@ public class ConfigurationParserTest {
assertEquals(2, realmHandlerConfiguration.getPropertyKeys().size()); assertEquals(2, realmHandlerConfiguration.getPropertyKeys().size());
assertEquals("EMPTY", realmHandlerConfiguration.getString("dataStoreMode", null)); assertEquals("EMPTY", realmHandlerConfiguration.getString("dataStoreMode", null));
assertEquals("noob", realmHandlerConfiguration.getString("foo", null)); assertEquals("noob", realmHandlerConfiguration.getString("foo", null));
// <Component>
// <name>ServiceHandler</name>
// <api>li.strolch.service.api.ServiceHandler</api>
// <impl>li.strolch.service.YetAnotherServiceHandler</impl>
// <depends>RealmHandler</depends>
// <Properties>
// <bar>foo</bar>
// </Properties>
// </Component>
ComponentConfiguration serviceHandlerConfiguration = strolchConfiguration
.getComponentConfiguration("ServiceHandler");
assertNotNull("Should have created a ServiceHandler Configuration", serviceHandlerConfiguration);
assertEquals("ServiceHandler", serviceHandlerConfiguration.getName());
assertEquals("li.strolch.service.api.ServiceHandler", serviceHandlerConfiguration.getApi());
assertEquals("li.strolch.service.YetAnotherServiceHandler", serviceHandlerConfiguration.getImpl());
assertEquals(2, serviceHandlerConfiguration.getDependencies().size());
assertTrue(serviceHandlerConfiguration.getDependencies().contains("RealmHandler"));
assertTrue(serviceHandlerConfiguration.getDependencies().contains("PrivilegeHandler"));
assertEquals(1, serviceHandlerConfiguration.getPropertyKeys().size());
assertEquals("foo", serviceHandlerConfiguration.getString("bar", null));
} }
} }

View File

@ -189,6 +189,21 @@ public class InMemoryQueryTest {
List<Resource> result = dao.doQuery(ballQuery, new NoStrategyResourceVisitor()); List<Resource> result = dao.doQuery(ballQuery, new NoStrategyResourceVisitor());
assertEquals(1, result.size()); assertEquals(1, result.size());
} }
@Test
public void shouldQueryByName() {
List<Resource> resources = getResources();
resources.add(getBallResource());
InMemoryResourceDao dao = new InMemoryResourceDao();
dao.saveAll(resources);
ResourceQuery ballQuery = new ResourceQuery(new StrolchTypeNavigation("Ball"));
ballQuery.with(new NameSelection("ball ", StringMatchMode.CONTAINS_CASE_INSENSITIVE));
List<Resource> result = dao.doQuery(ballQuery, new NoStrategyResourceVisitor());
assertEquals(1, result.size());
}
private Resource getBallResource() { private Resource getBallResource() {
Resource res1 = new Resource("childrensBall", "Ball 1", "Ball"); Resource res1 = new Resource("childrensBall", "Ball 1", "Ball");

View File

@ -68,6 +68,17 @@
<foo>noob</foo> <foo>noob</foo>
</Properties> </Properties>
</Component> </Component>
<Component>
<name>ServiceHandler</name>
<api>li.strolch.service.api.ServiceHandler</api>
<impl>li.strolch.service.YetAnotherServiceHandler</impl>
<depends>RealmHandler</depends>
<depends>PrivilegeHandler</depends>
<Properties>
<bar>foo</bar>
</Properties>
</Component>
</env> </env>
</StrolchConfiguration> </StrolchConfiguration>

View File

@ -15,10 +15,10 @@
*/ */
package li.strolch.persistence.postgresql; package li.strolch.persistence.postgresql;
import java.sql.Date;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Timestamp;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -94,8 +94,8 @@ public class PostgreSqlAuditDao implements AuditDao {
String sql = "select count(*) from " + TABLE_NAME + " where " + DATE + " between ? and ?"; //$NON-NLS-1$ String sql = "select count(*) from " + TABLE_NAME + " where " + DATE + " between ? and ?"; //$NON-NLS-1$
try (PreparedStatement statement = this.tx.getConnection().prepareStatement(sql)) { try (PreparedStatement statement = this.tx.getConnection().prepareStatement(sql)) {
statement.setDate(1, new Date(dateRange.getFromDate().getTime()), Calendar.getInstance()); statement.setTimestamp(1, new Timestamp(dateRange.getFromDate().getTime()), Calendar.getInstance());
statement.setDate(2, new Date(dateRange.getToDate().getTime()), Calendar.getInstance()); statement.setTimestamp(2, new Timestamp(dateRange.getToDate().getTime()), Calendar.getInstance());
try (ResultSet result = statement.executeQuery()) { try (ResultSet result = statement.executeQuery()) {
result.next(); result.next();
@ -113,8 +113,8 @@ public class PostgreSqlAuditDao implements AuditDao {
try (PreparedStatement statement = this.tx.getConnection().prepareStatement(sql)) { try (PreparedStatement statement = this.tx.getConnection().prepareStatement(sql)) {
statement.setString(1, type); statement.setString(1, type);
statement.setDate(2, new Date(dateRange.getFromDate().getTime()), Calendar.getInstance()); statement.setTimestamp(2, new Timestamp(dateRange.getFromDate().getTime()), Calendar.getInstance());
statement.setDate(3, new Date(dateRange.getToDate().getTime()), Calendar.getInstance()); statement.setTimestamp(3, new Timestamp(dateRange.getToDate().getTime()), Calendar.getInstance());
try (ResultSet result = statement.executeQuery()) { try (ResultSet result = statement.executeQuery()) {
result.next(); result.next();
@ -174,8 +174,8 @@ public class PostgreSqlAuditDao implements AuditDao {
try (PreparedStatement statement = this.tx.getConnection().prepareStatement(sql)) { try (PreparedStatement statement = this.tx.getConnection().prepareStatement(sql)) {
statement.setString(1, type); statement.setString(1, type);
statement.setDate(2, new Date(dateRange.getFromDate().getTime()), Calendar.getInstance()); statement.setTimestamp(2, new Timestamp(dateRange.getFromDate().getTime()), Calendar.getInstance());
statement.setDate(3, new Date(dateRange.getToDate().getTime()), Calendar.getInstance()); statement.setTimestamp(3, new Timestamp(dateRange.getToDate().getTime()), Calendar.getInstance());
try (ResultSet result = statement.executeQuery()) { try (ResultSet result = statement.executeQuery()) {
while (result.next()) { while (result.next()) {
@ -278,8 +278,8 @@ public class PostgreSqlAuditDao implements AuditDao {
try (PreparedStatement preparedStatement = this.tx.getConnection().prepareStatement(sql)) { try (PreparedStatement preparedStatement = this.tx.getConnection().prepareStatement(sql)) {
preparedStatement.setString(1, type); preparedStatement.setString(1, type);
preparedStatement.setDate(2, new Date(dateRange.getFromDate().getTime()), Calendar.getInstance()); preparedStatement.setTimestamp(2, new Timestamp(dateRange.getFromDate().getTime()), Calendar.getInstance());
preparedStatement.setDate(3, new Date(dateRange.getToDate().getTime()), Calendar.getInstance()); preparedStatement.setTimestamp(3, new Timestamp(dateRange.getToDate().getTime()), Calendar.getInstance());
int modCount = preparedStatement.executeUpdate(); int modCount = preparedStatement.executeUpdate();
return modCount; return modCount;
@ -315,14 +315,14 @@ public class PostgreSqlAuditDao implements AuditDao {
ps.setString(2, audit.getUsername()); ps.setString(2, audit.getUsername());
ps.setString(3, audit.getFirstname()); ps.setString(3, audit.getFirstname());
ps.setString(4, audit.getLastname()); ps.setString(4, audit.getLastname());
ps.setDate(5, new Date(audit.getDate().getTime()), Calendar.getInstance()); ps.setTimestamp(5, new Timestamp(audit.getDate().getTime()), Calendar.getInstance());
ps.setString(6, audit.getElementType()); ps.setString(6, audit.getElementType());
ps.setString(7, audit.getElementAccessed()); ps.setString(7, audit.getElementAccessed());
if (audit.getNewVersion() == null) if (audit.getNewVersion() == null)
ps.setDate(8, null); ps.setDate(8, null);
else else
ps.setDate(8, new Date(audit.getNewVersion().getTime()), Calendar.getInstance()); ps.setTimestamp(8, new Timestamp(audit.getNewVersion().getTime()), Calendar.getInstance());
ps.setString(9, audit.getAction()); ps.setString(9, audit.getAction());
ps.setString(10, audit.getAccessType().name()); ps.setString(10, audit.getAccessType().name());
@ -335,10 +335,10 @@ public class PostgreSqlAuditDao implements AuditDao {
audit.setUsername(resultSet.getString(2)); audit.setUsername(resultSet.getString(2));
audit.setFirstname(resultSet.getString(3)); audit.setFirstname(resultSet.getString(3));
audit.setLastname(resultSet.getString(4)); audit.setLastname(resultSet.getString(4));
audit.setDate(resultSet.getDate(5)); audit.setDate(resultSet.getTimestamp(5));
audit.setElementType(resultSet.getString(6)); audit.setElementType(resultSet.getString(6));
audit.setElementAccessed(resultSet.getString(7)); audit.setElementAccessed(resultSet.getString(7));
audit.setNewVersion(resultSet.getDate(8)); audit.setNewVersion(resultSet.getTimestamp(8));
audit.setAction(resultSet.getString(9)); audit.setAction(resultSet.getString(9));
audit.setAccessType(AccessType.valueOf(resultSet.getString(10))); audit.setAccessType(AccessType.valueOf(resultSet.getString(10)));
return audit; return audit;

View File

@ -17,11 +17,11 @@ package li.strolch.persistence.postgresql;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.sql.Date;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.SQLXML; import java.sql.SQLXML;
import java.sql.Timestamp;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -107,7 +107,7 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
preparedStatement.setString(2, order.getName()); preparedStatement.setString(2, order.getName());
preparedStatement.setString(3, order.getType()); preparedStatement.setString(3, order.getType());
preparedStatement.setString(4, order.getState().name()); preparedStatement.setString(4, order.getState().name());
preparedStatement.setDate(5, new Date(order.getDate().getTime()), Calendar.getInstance()); preparedStatement.setTimestamp(5, new Timestamp(order.getDate().getTime()), Calendar.getInstance());
SQLXML sqlxml = createSqlXml(order, preparedStatement); SQLXML sqlxml = createSqlXml(order, preparedStatement);
preparedStatement.setSQLXML(6, sqlxml); preparedStatement.setSQLXML(6, sqlxml);
@ -137,7 +137,7 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
preparedStatement.setString(1, order.getName()); preparedStatement.setString(1, order.getName());
preparedStatement.setString(2, order.getType()); preparedStatement.setString(2, order.getType());
preparedStatement.setString(3, order.getState().name()); preparedStatement.setString(3, order.getState().name());
preparedStatement.setDate(4, new Date(order.getDate().getTime()), Calendar.getInstance()); preparedStatement.setTimestamp(4, new Timestamp(order.getDate().getTime()), Calendar.getInstance());
preparedStatement.setString(6, order.getId()); preparedStatement.setString(6, order.getId());
SQLXML sqlxml = createSqlXml(order, preparedStatement); SQLXML sqlxml = createSqlXml(order, preparedStatement);

View File

@ -30,6 +30,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import ch.eitchnet.db.DbSchemaVersionCheck; import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.utils.Version;
import ch.eitchnet.utils.helper.StringHelper; import ch.eitchnet.utils.helper.StringHelper;
public class CachedDaoTest extends AbstractModelTest { public class CachedDaoTest extends AbstractModelTest {
@ -65,7 +66,7 @@ public class CachedDaoTest extends AbstractModelTest {
} }
public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception { public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception {
String dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, Version dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class); PostgreSqlPersistenceHandler.class);
logger.info(MessageFormat.format("Dropping schema for expected version {0}", dbVersion)); logger.info(MessageFormat.format("Dropping schema for expected version {0}", dbVersion));
String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,

View File

@ -23,7 +23,6 @@ import static li.strolch.persistence.postgresql.dao.test.CachedDaoTest.dropSchem
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement;
import java.text.MessageFormat; import java.text.MessageFormat;
import li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler; import li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler;
@ -34,6 +33,7 @@ import org.junit.Test;
import ch.eitchnet.db.DbException; import ch.eitchnet.db.DbException;
import ch.eitchnet.db.DbSchemaVersionCheck; import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.utils.Version;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
@ -56,17 +56,16 @@ public class DbMigrationTest {
DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, ctxClass, allowSchemaCreation, DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, ctxClass, allowSchemaCreation,
allowSchemaMigration, allowSchemaDrop); allowSchemaMigration, allowSchemaDrop);
try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD); try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) {
Statement st = con.createStatement();) {
// DROP 0.2.1 // DROP 0.2.1
dbCheck.dropSchema(StrolchConstants.DEFAULT_REALM, "0.2.1", st); dbCheck.dropSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.1"));
// CREATE 0.2.0 // CREATE 0.2.0
dbCheck.createSchema(StrolchConstants.DEFAULT_REALM, "0.2.0", st); dbCheck.createSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.0"));
// MIGRATE 0.2.1 // MIGRATE 0.2.1
dbCheck.migrateSchema(StrolchConstants.DEFAULT_REALM, "0.2.1", st); dbCheck.migrateSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.1"));
} catch (SQLException e) { } catch (SQLException e) {
String msg = "Failed to open DB connection to URL {0} due to: {1}"; //$NON-NLS-1$ String msg = "Failed to open DB connection to URL {0} due to: {1}"; //$NON-NLS-1$

View File

@ -38,6 +38,7 @@ import org.junit.Before;
import ch.eitchnet.db.DbSchemaVersionCheck; import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.privilege.model.Certificate; import ch.eitchnet.privilege.model.Certificate;
import ch.eitchnet.utils.Version;
/** /**
* @author Robert von Burg <eitch@eitchnet.ch> * @author Robert von Burg <eitch@eitchnet.ch>
@ -77,7 +78,7 @@ public abstract class AbstractRealmServiceTest {
} }
public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception { public static void dropSchema(String dbUrl, String dbUsername, String dbPassword) throws Exception {
String dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, Version dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class); PostgreSqlPersistenceHandler.class);
String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX, String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class, dbVersion, "drop"); //$NON-NLS-1$ PostgreSqlPersistenceHandler.class, dbVersion, "drop"); //$NON-NLS-1$