All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jpmml.evaluator.IntegrationTestBatch Maven / Gradle / Ivy

There is a newer version: 1.4.15
Show newest version
/*
 * Copyright (c) 2015 Villu Ruusmann
 *
 * This file is part of JPMML-Evaluator
 *
 * JPMML-Evaluator is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * JPMML-Evaluator is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with JPMML-Evaluator.  If not, see .
 */
package org.jpmml.evaluator;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;

import com.google.common.io.ByteStreams;
import org.dmg.pmml.PMML;
import org.jpmml.model.visitors.LocatorTransformer;

abstract
public class IntegrationTestBatch extends ArchiveBatch {

	private Evaluator evaluator = null;


	public IntegrationTestBatch(String name, String dataset){
		super(name, dataset);
	}

	abstract
	public IntegrationTest getIntegrationTest();

	@Override
	public InputStream open(String path){
		IntegrationTest integrationTest = getIntegrationTest();

		Class clazz = integrationTest.getClass();

		return clazz.getResourceAsStream(path);
	}

	@Override
	public PMML getPMML() throws Exception {
		PMML pmml = super.getPMML();

		LocatorTransformer locatorTransformer = new LocatorTransformer();
		locatorTransformer.applyTo(pmml);

		return pmml;
	}

	@Override
	public Evaluator getEvaluator() throws Exception {

		if(this.evaluator == null){
			Evaluator evaluator =  super.getEvaluator();

			ensureSerializability(evaluator);

			this.evaluator = evaluator;
		}

		return this.evaluator;
	}

	@Override
	public void close() throws Exception {

		if(this.evaluator != null){

			try {
				ensureSerializability(this.evaluator);
			} finally {
				this.evaluator = null;
			}
		}
	}

	static
	private void ensureSerializability(Evaluator evaluator) throws IOException {

		try(ObjectOutputStream oos = new ObjectOutputStream(ByteStreams.nullOutputStream())){
			oos.writeObject(evaluator);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy