Mercurial > dive4elements > gnv-client
view gnv-artifacts/src/test/java/de/intevation/gnv/artifacts/GNVArtifactsTestCaseBase.java @ 605:e8ebdbc7f1e3
First step of removing the cache blob. The static part of the describe document will be created by using the input data stored at each state. Some TODOs left (see ChangeLog).
gnv-artifacts/trunk@671 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Tue, 09 Feb 2010 14:27:55 +0000 |
parents | e0d7b8a0bc42 |
children | 9a828e5a2390 |
line wrap: on
line source
/** * */ package de.intevation.gnv.artifacts; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import junit.framework.TestCase; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.xml.sax.SAXException; import de.intevation.artifactdatabase.Config; import de.intevation.artifactdatabase.DefaultCallMeta; import de.intevation.artifactdatabase.DefaultPreferredLocale; import de.intevation.artifactdatabase.FactoryBootstrap; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactFactory; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.CallMeta; import de.intevation.artifacts.PreferredLocale; import de.intevation.gnv.utils.ArtifactXMLUtilities; /** * @author Tim Englich <tim.englich@intevation.de> * */ public abstract class GNVArtifactsTestCaseBase extends TestCase { /** * the logger, used to log exceptions and additonaly information */ private static Logger log = null; static { BasicConfigurator.configure(); log = Logger.getLogger(GNVArtifactsTestCaseBase.class); } private String configurationDir = "doc/conf"; protected FactoryBootstrap bootstrap = null; /** * Constructor */ public GNVArtifactsTestCaseBase() { } /** * Constructor * @param name */ public GNVArtifactsTestCaseBase(String name) { super(name); } public abstract void testArtifact(); /** * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { log.debug("GNVArtifactsTestCase.setUp"); super.setUp(); log.info(Config.CONFIG_DIR + " ==> " + configurationDir); System.setProperty(Config.CONFIG_DIR, configurationDir); log.info("Bootstrap wird initialisiert."); bootstrap = new FactoryBootstrap(); bootstrap.boot(); } protected void writeDocument2Log(Document document) { log.debug(new ArtifactXMLUtilities().writeDocument2String(document)); } protected Document readDocument(String fileName) { Document returnValue = null; try { DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory .newInstance(); docBuilderFactory.setNamespaceAware(true); DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); returnValue = docBuilder.parse(new File(fileName)); } catch (ParserConfigurationException e) { log.error(e, e); } catch (SAXException e) { log.error(e, e); } catch (IOException e) { log.error(e, e); } return returnValue; } protected void check4ExceptionReport(Document document) throws Exception { document = new ArtifactXMLUtilities().reInitDocument(document); String message = Config.getStringXPath(document, "/exceptionreport/exception"); if (message != null) { throw new Exception(message); } } /** * @return */ protected CallContext createCallContext(ArtifactFactory artifactFactory) { CallMeta callMeta = new DefaultCallMeta( new PreferredLocale[] { new DefaultPreferredLocale("de_DE", 1.0f) }); CallContext cc = new TestCallContext(bootstrap.getContext(), callMeta,artifactFactory); return cc; } /** * @param artifact * @param cc * @param describeDocument TODO * @throws Exception */ protected void doNextStep(Artifact artifact, CallContext cc, String feedDocument, String advanceDocument, Document describeDocument) throws Exception { Document outputData = artifact.describe(describeDocument,cc); // this.writeDocument2Log(outputData); outputData = artifact.feed(this.readDocument(feedDocument), cc); this.check4ExceptionReport(outputData); outputData = artifact.advance(this.readDocument(advanceDocument), cc); // this.writeDocument2Log(outputData); this.check4ExceptionReport(outputData); } protected void createFile(byte[] content, String fileName) { try { FileOutputStream fos = new FileOutputStream(new File(fileName)); ByteArrayInputStream bis = new ByteArrayInputStream(content); byte[] buf = new byte[4096]; while (bis.read(buf) > 0) { fos.write(buf); } fos.flush(); fos.close(); } catch (FileNotFoundException e) { log.error(e, e); } catch (IOException e) { log.error(e, e); } } /** * @param artefactName */ protected ArtifactFactory getArtifactFactory(String artefactName) { log.debug("GNVArtifactsTestCase.getArtifactFactory"); ArtifactFactory[] artifactFactories = bootstrap.getArtifactFactories(); for (int i = 0; i < artifactFactories.length; i++) { if (artifactFactories[i].getName().equals(artefactName)) { log.debug("ArtifactFactory wurde gefunden."); return artifactFactories[i]; } } return null; } /** * @param artifactFactory * @return */ protected Artifact createArtifact(ArtifactFactory artifactFactory) { Document setupData = null; Artifact artifact = artifactFactory.createArtifact( "" + System.currentTimeMillis(), bootstrap.getContext(), setupData); assertNotNull(artifact); log.debug("Artifact is available"); return artifact; } }