org.reficio.ws.test.spock.ServerExtension.groovy Maven / Gradle / Ivy
The newest version!
/**
* Copyright (c) 2012-2013 Reficio (TM) - Reestablish your software!. All Rights Reserved.
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.reficio.ws.test.spock
import org.reficio.ws.test.ServerProcessor
import org.spockframework.runtime.AbstractRunListener
import org.spockframework.runtime.extension.AbstractAnnotationDrivenExtension
import org.spockframework.runtime.model.FeatureInfo
import org.spockframework.runtime.model.SpecInfo
/**
* @author: Tom Bujok ([email protected])
*
* Reficio™ - Reestablish your software!
* www.reficio.org
*/
class ServerExtension extends AbstractAnnotationDrivenExtension {
def featureAnnotations = [:]
void visitSpecAnnotation(Server annotation, SpecInfo spec) {
spec.addListener(new AbstractRunListener() {
private ServerProcessor processor
@Override
public void beforeSpec(SpecInfo specInfo) {
processor = new ServerProcessor(annotation, spec.getClass())
processor.initServer()
}
@Override
public void afterSpec(SpecInfo specInfo) {
processor.stopServer()
}
});
}
void visitFeatureAnnotation(Server annotation, FeatureInfo feature) {
if (featureAnnotations.isEmpty()) {
feature.getParent().addListener(new AbstractRunListener() {
@Override
public void beforeFeature(FeatureInfo featureInfo) {
ServerProcessor processor = featureAnnotations[featureInfo]
if (processor) {
processor.initServer()
}
}
@Override
public void afterFeature(FeatureInfo featureInfo) {
ServerProcessor processor = featureAnnotations[featureInfo]
if (processor) {
processor.stopServer()
}
}
});
}
featureAnnotations[feature] = new ServerProcessor(annotation, feature.getClass())
}
}