Skip to content

Commit

Permalink
relax triggers API
Browse files Browse the repository at this point in the history
  • Loading branch information
shabanovd committed Nov 11, 2013
1 parent 14ca638 commit 1069922
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 32 deletions.
8 changes: 4 additions & 4 deletions src/org/exist/collections/CollectionConfiguration.java
Expand Up @@ -144,10 +144,10 @@ protected void read(DBBroker broker, Document doc, boolean checkOnly,
node = triggers.item(j);
if(node.getNodeType() == Node.ELEMENT_NODE &&
node.getLocalName().equals(TRIGGER_ELEMENT)) {
final List <TriggerProxy> triggerProxys = configureTrigger(
final List <TriggerProxy<? extends Trigger>> triggerProxys = configureTrigger(
(Element)node, srcCollectionURI, checkOnly);
if(triggerProxys != null) {
for(final TriggerProxy triggerProxy : triggerProxys) {
for(final TriggerProxy<? extends Trigger> triggerProxy : triggerProxys) {
if(triggerProxy instanceof DocumentTriggerProxy) {
getDocumentTriggerProxies().add((DocumentTriggerProxy)triggerProxy);
}
Expand Down Expand Up @@ -316,7 +316,7 @@ public CollectionTriggerProxies getCollectionTriggerProxies() {
return collectionTriggerProxies;
}

private List<TriggerProxy> configureTrigger(Element triggerElement,
private List<TriggerProxy<? extends Trigger>> configureTrigger(Element triggerElement,
XmldbURI collectionConfigurationURI, boolean testOnly) throws CollectionConfigurationException {

//TODO : rely on schema-driven validation -pb
Expand All @@ -331,7 +331,7 @@ private List<TriggerProxy> configureTrigger(Element triggerElement,
}
final NodeList nlParameter = triggerElement.getElementsByTagNameNS(NAMESPACE, PARAMETER_ELEMENT);
final Map<String, List<? extends Object>> parameters = ParametersExtractor.extract(nlParameter);
final List<TriggerProxy> triggerProxys = AbstractTriggerProxy.newInstance(clazz, collectionConfigurationURI, parameters);
final List<TriggerProxy<? extends Trigger>> triggerProxys = AbstractTriggerProxy.newInstance(clazz, collectionConfigurationURI, parameters);
return triggerProxys;
} catch (final ClassNotFoundException e) {
if(testOnly) {
Expand Down
10 changes: 5 additions & 5 deletions src/org/exist/collections/triggers/AbstractTriggerProxies.java
Expand Up @@ -29,28 +29,28 @@
*
* @author aretter
*/
public abstract class AbstractTriggerProxies<T extends Trigger, P extends AbstractTriggerProxy<T>, D extends TriggersVisitor> implements TriggerProxies<P>{
public abstract class AbstractTriggerProxies<T extends Trigger> implements TriggerProxies<T> {

//extract signatures to interface

private List<P> proxies = new ArrayList<P>();
private List<TriggerProxy<T>> proxies = new ArrayList<TriggerProxy<T>>();

@Override
public void add(P proxy) {
public void add(TriggerProxy<T> proxy) {
proxies.add(proxy);
}

protected List<T> instantiateTriggers(DBBroker broker) throws TriggerException {

final List<T> triggers = new ArrayList<T>(proxies.size());

for(final P proxy : proxies) {
for(final TriggerProxy<T> proxy : proxies) {
triggers.add(proxy.newInstance(broker));
}

return triggers;
}

@Override
public abstract D instantiateVisitor(DBBroker broker);
public abstract TriggersVisitor<T> instantiateVisitor(DBBroker broker);
}
13 changes: 6 additions & 7 deletions src/org/exist/collections/triggers/AbstractTriggerProxy.java
Expand Up @@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.exist.collections.Collection;
import org.exist.security.PermissionDeniedException;
import org.exist.storage.DBBroker;
Expand Down Expand Up @@ -72,7 +73,7 @@ protected Map<String, List<? extends Object>> getParameters() {
return parameters;
}

protected T newInstance(DBBroker broker) throws TriggerException {
public T newInstance(DBBroker broker) throws TriggerException {
try {
final T trigger = getClazz().newInstance();

Expand All @@ -94,20 +95,18 @@ protected T newInstance(DBBroker broker) throws TriggerException {
}
}

public static List<TriggerProxy> newInstance(Class c, XmldbURI collectionConfigurationURI, Map<String, List<? extends Object>> parameters) throws TriggerException {
public static List<TriggerProxy<? extends Trigger>> newInstance(Class<? extends Trigger> c, XmldbURI collectionConfigurationURI, Map<String, List<? extends Object>> parameters) throws TriggerException {

final List<TriggerProxy> proxies = new ArrayList<TriggerProxy>();
final List<TriggerProxy<? extends Trigger>> proxies = new ArrayList<TriggerProxy<? extends Trigger>>();

if(DocumentTrigger.class.isAssignableFrom(c)) {
proxies.add(new DocumentTriggerProxy((Class<DocumentTrigger>)c, collectionConfigurationURI, parameters));
proxies.add(new DocumentTriggerProxy((Class<? extends DocumentTrigger>)c, collectionConfigurationURI, parameters));
}


if(CollectionTrigger.class.isAssignableFrom(c)) {
proxies.add(new CollectionTriggerProxy((Class<CollectionTrigger>)c, collectionConfigurationURI, parameters));
proxies.add(new CollectionTriggerProxy((Class<? extends CollectionTrigger>)c, collectionConfigurationURI, parameters));
}


if(proxies.isEmpty()) {
throw new TriggerException("Unknown Trigger class type: " + c.getName());
}
Expand Down
Expand Up @@ -28,12 +28,12 @@
*
* @author aretter
*/
public abstract class AbstractTriggersVisitor<T extends Trigger, P extends AbstractTriggerProxies> implements TriggersVisitor {
public abstract class AbstractTriggersVisitor<T extends Trigger> implements TriggersVisitor<T> {
private final DBBroker broker;
private final P proxies;
private final AbstractTriggerProxies<T> proxies;
private List<T> triggers;

public AbstractTriggersVisitor(DBBroker broker, P proxies) {
public AbstractTriggersVisitor(DBBroker broker, AbstractTriggerProxies<T> proxies) {
this.broker = broker;
this.proxies = proxies;
}
Expand Down
Expand Up @@ -27,7 +27,7 @@
*
* @author aretter
*/
public class CollectionTriggerProxies extends AbstractTriggerProxies<CollectionTrigger, CollectionTriggerProxy, CollectionTriggersVisitor> {
public class CollectionTriggerProxies extends AbstractTriggerProxies<CollectionTrigger> {

@Override
public CollectionTriggersVisitor instantiateVisitor(DBBroker broker) {
Expand Down
Expand Up @@ -31,11 +31,11 @@
*/
public class CollectionTriggerProxy extends AbstractTriggerProxy<CollectionTrigger> {

public CollectionTriggerProxy(Class<CollectionTrigger> clazz, XmldbURI collectionConfigurationURI){
public CollectionTriggerProxy(Class<? extends CollectionTrigger> clazz, XmldbURI collectionConfigurationURI){
super(clazz, collectionConfigurationURI);
}

public CollectionTriggerProxy(Class<CollectionTrigger> clazz, XmldbURI collectionConfigurationURI, Map<String, List<? extends Object>> parameters) {
public CollectionTriggerProxy(Class<? extends CollectionTrigger> clazz, XmldbURI collectionConfigurationURI, Map<String, List<? extends Object>> parameters) {
super(clazz, collectionConfigurationURI, parameters);
}
}
Expand Up @@ -33,7 +33,7 @@
*
* @author aretter
*/
public class CollectionTriggersVisitor extends AbstractTriggersVisitor<CollectionTrigger, CollectionTriggerProxies> implements CollectionTrigger {
public class CollectionTriggersVisitor extends AbstractTriggersVisitor<CollectionTrigger> implements CollectionTrigger {

protected Logger LOG = Logger.getLogger(getClass());

Expand Down
Expand Up @@ -27,7 +27,7 @@
*
* @author aretter
*/
public class DocumentTriggerProxies extends AbstractTriggerProxies<DocumentTrigger, DocumentTriggerProxy, DocumentTriggersVisitor> {
public class DocumentTriggerProxies extends AbstractTriggerProxies<DocumentTrigger> {

@Override
public DocumentTriggersVisitor instantiateVisitor(DBBroker broker) {
Expand Down
Expand Up @@ -39,15 +39,14 @@
*
* @author aretter
*/
public class DocumentTriggersVisitor extends AbstractTriggersVisitor<DocumentTrigger, DocumentTriggerProxies> implements DocumentTrigger {
public class DocumentTriggersVisitor extends AbstractTriggersVisitor<DocumentTrigger> implements DocumentTrigger {

protected Logger LOG = Logger.getLogger(getClass());

public DocumentTriggersVisitor(DBBroker broker, DocumentTriggerProxies proxies) {
super(broker, proxies);
}


@Override
public void configure(DBBroker broker, Collection parent, Map<String, List<? extends Object>> parameters) throws TriggerException {
//ignore triggers are already configured by this stage!
Expand Down
6 changes: 3 additions & 3 deletions src/org/exist/collections/triggers/TriggerProxies.java
Expand Up @@ -27,9 +27,9 @@
*
* @author aretter
*/
public interface TriggerProxies<P extends TriggerProxy> {
public interface TriggerProxies<T extends Trigger> {

public void add(P proxy);
public void add(TriggerProxy<T> proxy);

public abstract TriggersVisitor instantiateVisitor(DBBroker broker);
public abstract TriggersVisitor<T> instantiateVisitor(DBBroker broker);
}
4 changes: 4 additions & 0 deletions src/org/exist/collections/triggers/TriggerProxy.java
Expand Up @@ -24,11 +24,15 @@
import java.util.List;
import java.util.Map;

import org.exist.storage.DBBroker;

/**
*
* @author aretter
*/
public interface TriggerProxy<T extends Trigger> {

public void setParameters(Map<String, List<? extends Object>> parameters);

public T newInstance(DBBroker broker) throws TriggerException;
}
4 changes: 1 addition & 3 deletions src/org/exist/collections/triggers/TriggersVisitor.java
Expand Up @@ -25,8 +25,6 @@
*
* @author aretter
*/


public interface TriggersVisitor extends Trigger {
public interface TriggersVisitor<T extends Trigger> extends Trigger {

}

0 comments on commit 1069922

Please sign in to comment.