@Override public PMML getPMML() throws Exception { PMML pmml = super.getPMML(); LocatorTransformer locatorTransformer = new LocatorTransformer(); locatorTransformer.applyTo(pmml); return pmml; }
public LoadingModelEvaluatorBuilder load(InputStream is, String modelName) throws SAXException, JAXBException { Schema schema = getSchema(); ValidationEventHandler validationEventHandler = getValidationEventHandler(); List<? extends XMLFilter> filters = getFilters(); boolean locatable = getLocatable(); VisitorBattery visitors = getVisitors(); Unmarshaller unmarshaller = JAXBUtil.createUnmarshaller(); unmarshaller.setSchema(schema); unmarshaller.setEventHandler(validationEventHandler); if(filters == null){ filters = Collections.singletonList(new ImportFilter()); } Source source = SAXUtil.createFilteredSource(is, filters.toArray(new XMLFilter[filters.size()])); PMML pmml = (PMML)unmarshaller.unmarshal(source); Visitor locatorHandler = (locatable ? new LocatorTransformer() : new LocatorNullifier()); locatorHandler.applyTo(pmml); if(visitors != null && visitors.size() > 0){ visitors.applyTo(pmml); } Model model = PMMLUtil.findModel(pmml, modelName); setPMML(pmml); setModel(model); return this; }
@Override public VisitorAction visit(PMMLObject object){ object.setLocator(transform(object.getLocator())); return super.visit(object); }
@Test public void mixedContent() throws Exception { PMML pmml = ResourceUtil.unmarshal(getClass()); List<?> content = ExtensionUtil.getContent(pmml); assertEquals(5, content.size()); assertEquals("First text value", content.get(0)); assertEquals(Arrays.asList("First extension"), getDeepContent(content.get(1))); assertEquals("Second text value", content.get(2)); assertEquals(Arrays.asList("Second extension"), getDeepContent(content.get(3))); assertEquals("Third text value", content.get(4)); try { SerializationUtil.clone(pmml); fail(); } catch(NotSerializableException nse){ // Ignored } pmml.accept(new LocatorTransformer()); SerializationUtil.clone(pmml); }
@Override public VisitorAction visit(PMMLObject object){ object.setLocator(transform(object.getLocator())); return super.visit(object); }
@Override public PMML getPMML() throws Exception { PMML pmml = super.getPMML(); LocatorTransformer locatorTransformer = new LocatorTransformer(); locatorTransformer.applyTo(pmml); return pmml; }
@Test public void transformAndClone() throws Exception { PMML pmml = ResourceUtil.unmarshal(Version.PMML_4_3); assertNotNull(pmml.getLocator()); try { SerializationUtil.clone(pmml); fail(); } catch(NotSerializableException nse){ // Ignored } pmml.accept(new LocatorTransformer()); assertNotNull(pmml.getLocator()); SerializationUtil.clone(pmml); }