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);
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) {

View File

@ -153,7 +153,8 @@ public class ComponentDependencyAnalyzer {
}
String inset = StringHelper.normalizeLength(" ", depth * 2, false, ' '); //$NON-NLS-1$
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());
}
}

View File

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

View File

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

View File

@ -35,7 +35,7 @@ public class NameSelector<T extends StrolchElement> implements Selector<T> {
@Override
public boolean select(T element) {
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",
privilegeHandlerConfiguration.getImpl());
assertEquals(1, privilegeHandlerConfiguration.getPropertyKeys().size());
assertEquals(1, privilegeHandlerConfiguration.getDependencies().size());
assertTrue(privilegeHandlerConfiguration.getDependencies().contains("PersistenceHandler"));
assertEquals("PrivilegeConfig.xml", privilegeHandlerConfiguration.getString("privilegeConfigFile", null));
@ -178,5 +179,26 @@ public class ConfigurationParserTest {
assertEquals(2, realmHandlerConfiguration.getPropertyKeys().size());
assertEquals("EMPTY", realmHandlerConfiguration.getString("dataStoreMode", 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());
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() {
Resource res1 = new Resource("childrensBall", "Ball 1", "Ball");

View File

@ -68,6 +68,17 @@
<foo>noob</foo>
</Properties>
</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>
</StrolchConfiguration>

View File

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

View File

@ -17,11 +17,11 @@ package li.strolch.persistence.postgresql;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLXML;
import java.sql.Timestamp;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Calendar;
@ -107,7 +107,7 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
preparedStatement.setString(2, order.getName());
preparedStatement.setString(3, order.getType());
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);
preparedStatement.setSQLXML(6, sqlxml);
@ -137,7 +137,7 @@ public class PostgreSqlOrderDao extends PostgresqlDao<Order> implements OrderDao
preparedStatement.setString(1, order.getName());
preparedStatement.setString(2, order.getType());
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());
SQLXML sqlxml = createSqlXml(order, preparedStatement);

View File

@ -30,6 +30,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.utils.Version;
import ch.eitchnet.utils.helper.StringHelper;
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 {
String dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
Version dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class);
logger.info(MessageFormat.format("Dropping schema for expected version {0}", dbVersion));
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.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.MessageFormat;
import li.strolch.persistence.postgresql.PostgreSqlPersistenceHandler;
@ -34,6 +33,7 @@ import org.junit.Test;
import ch.eitchnet.db.DbException;
import ch.eitchnet.db.DbSchemaVersionCheck;
import ch.eitchnet.utils.Version;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
@ -56,17 +56,16 @@ public class DbMigrationTest {
DbSchemaVersionCheck dbCheck = new DbSchemaVersionCheck(scriptPrefix, ctxClass, allowSchemaCreation,
allowSchemaMigration, allowSchemaDrop);
try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
Statement st = con.createStatement();) {
try (Connection con = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD)) {
// 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
dbCheck.createSchema(StrolchConstants.DEFAULT_REALM, "0.2.0", st);
dbCheck.createSchema(con, StrolchConstants.DEFAULT_REALM, Version.valueOf("0.2.0"));
// 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) {
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.privilege.model.Certificate;
import ch.eitchnet.utils.Version;
/**
* @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 {
String dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
Version dbVersion = DbSchemaVersionCheck.getExpectedDbVersion(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class);
String sql = DbSchemaVersionCheck.getSql(PostgreSqlPersistenceHandler.SCRIPT_PREFIX,
PostgreSqlPersistenceHandler.class, dbVersion, "drop"); //$NON-NLS-1$