001 package com.thaiopensource.relaxng.impl; 002 003 abstract class ApplyAfterFunction extends AbstractPatternFunction { 004 private final ValidatorPatternBuilder builder; 005 006 ApplyAfterFunction(ValidatorPatternBuilder builder) { 007 this.builder = builder; 008 } 009 010 public Object caseAfter(AfterPattern p) { 011 return builder.makeAfter(p.getOperand1(), apply(p.getOperand2())); 012 } 013 014 public Object caseChoice(ChoicePattern p) { 015 return builder.makeChoice(p.getOperand1().applyForPattern(this), 016 p.getOperand2().applyForPattern(this)); 017 } 018 019 public Object caseNotAllowed(NotAllowedPattern p) { 020 return p; 021 } 022 023 public Object caseOther(Pattern p) { 024 throw new RuntimeException("apply after botch"); 025 } 026 027 abstract Pattern apply(Pattern p); 028 }