/** * Copyright 2007-2015, Kaazing Corporation. All rights reserved. * * Licensed 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.kaazing.k3po.lang.internal.ast.builder; import org.kaazing.k3po.lang.internal.ast.AstAcceptNode; import org.kaazing.k3po.lang.internal.ast.AstAcceptableNode; import org.kaazing.k3po.lang.internal.ast.AstScriptNode; public final class AstAcceptableNodeBuilder extends AbstractAstAcceptableNodeBuilder<AstAcceptableNode> { public AstAcceptableNodeBuilder() { this(new AstAcceptableNode()); } public AstAcceptableNodeBuilder setAcceptName(String acceptName) { node.setAcceptName(acceptName); return this; } @Override public AstOpenedNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addOpenedEvent() { return new AstOpenedNodeBuilder.StreamNested<>(this); } @Override public AstBoundNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addBoundEvent() { return new AstBoundNodeBuilder.StreamNested<>(this); } @Override public AstConnectedNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addConnectedEvent() { return new AstConnectedNodeBuilder.StreamNested<>(this); } @Override public AstReadNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addReadEvent() { return new AstReadNodeBuilder.StreamNested<>(this); } @Override public AstDisconnectedNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addDisconnectedEvent() { return new AstDisconnectedNodeBuilder.StreamNested<>(this); } @Override public AstUnboundNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addUnboundEvent() { return new AstUnboundNodeBuilder.StreamNested<>(this); } @Override public AstClosedNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addClosedEvent() { return new AstClosedNodeBuilder.StreamNested<>(this); } @Override public AstWriteNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addWriteCommand() { return new AstWriteNodeBuilder.StreamNested<>(this); } @Override public AstDisconnectNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addDisconnectCommand() { return new AstDisconnectNodeBuilder.StreamNested<>(this); } @Override public AstUnbindNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addUnbindCommand() { return new AstUnbindNodeBuilder.StreamNested<>(this); } @Override public AstCloseNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addCloseCommand() { return new AstCloseNodeBuilder.StreamNested<>(this); } @Override public AstAbortNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addAbortCommand() { return new AstAbortNodeBuilder.StreamNested<>(this); } @Override public AstAbortedNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addAbortedEvent() { return new AstAbortedNodeBuilder.StreamNested<>(this); } @Override public AstReadAwaitNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addReadAwaitBarrier() { return new AstReadAwaitNodeBuilder.StreamNested<>(this); } @Override public AstReadNotifyNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addReadNotifyBarrier() { return new AstReadNotifyNodeBuilder.StreamNested<>(this); } @Override public AstWriteAwaitNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addWriteAwaitBarrier() { return new AstWriteAwaitNodeBuilder.StreamNested<>(this); } @Override public AstWriteNotifyNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addWriteNotifyBarrier() { return new AstWriteNotifyNodeBuilder.StreamNested<>(this); } @Override public AstReadOptionNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addReadOption() { return new AstReadOptionNodeBuilder.StreamNested<>(this); } @Override public AstWriteOptionNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addWriteOption() { return new AstWriteOptionNodeBuilder.StreamNested<>(this); } @Override public AstAcceptableNode done() { return result; } private AstAcceptableNodeBuilder(AstAcceptableNode node) { super(node, node); } @Override public AstReadConfigNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addReadConfigEvent() { return new AstReadConfigNodeBuilder.StreamNested<>(this); } @Override public AstWriteConfigNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addWriteConfigCommand() { return new AstWriteConfigNodeBuilder.StreamNested<>(this); } @Override public AstFlushNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addFlushCommand() { return new AstFlushNodeBuilder.StreamNested<>(this); } @Override public AstReadClosedNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addReadCloseCommand() { return new AstReadClosedNodeBuilder.StreamNested<>(this); } @Override public AstWriteCloseNodeBuilder.StreamNested<AstAcceptableNodeBuilder> addWriteCloseCommand() { return new AstWriteCloseNodeBuilder.StreamNested<>(this); } public static final class ScriptNested<R extends AbstractAstNodeBuilder<? extends AstScriptNode, ?>> extends AbstractAstAcceptableNodeBuilder<R> { public ScriptNested(R builder) { super(builder); } public ScriptNested<R> setAcceptName(String acceptName) { node.setAcceptName(acceptName); return this; } @Override public AstOpenedNodeBuilder.StreamNested<ScriptNested<R>> addOpenedEvent() { return new AstOpenedNodeBuilder.StreamNested<>(this); } @Override public AstBoundNodeBuilder.StreamNested<ScriptNested<R>> addBoundEvent() { return new AstBoundNodeBuilder.StreamNested<>(this); } @Override public AstConnectedNodeBuilder.StreamNested<ScriptNested<R>> addConnectedEvent() { return new AstConnectedNodeBuilder.StreamNested<>(this); } @Override public AstReadNodeBuilder.StreamNested<ScriptNested<R>> addReadEvent() { return new AstReadNodeBuilder.StreamNested<>(this); } @Override public AstDisconnectedNodeBuilder.StreamNested<ScriptNested<R>> addDisconnectedEvent() { return new AstDisconnectedNodeBuilder.StreamNested<>(this); } @Override public AstUnboundNodeBuilder.StreamNested<ScriptNested<R>> addUnboundEvent() { return new AstUnboundNodeBuilder.StreamNested<>(this); } @Override public AstClosedNodeBuilder.StreamNested<ScriptNested<R>> addClosedEvent() { return new AstClosedNodeBuilder.StreamNested<>(this); } @Override public AstWriteNodeBuilder.StreamNested<ScriptNested<R>> addWriteCommand() { return new AstWriteNodeBuilder.StreamNested<>(this); } @Override public AstDisconnectNodeBuilder.StreamNested<ScriptNested<R>> addDisconnectCommand() { return new AstDisconnectNodeBuilder.StreamNested<>(this); } @Override public AstUnbindNodeBuilder.StreamNested<ScriptNested<R>> addUnbindCommand() { return new AstUnbindNodeBuilder.StreamNested<>(this); } @Override public AstCloseNodeBuilder.StreamNested<ScriptNested<R>> addCloseCommand() { return new AstCloseNodeBuilder.StreamNested<>(this); } @Override public AstAbortNodeBuilder.StreamNested<ScriptNested<R>> addAbortCommand() { return new AstAbortNodeBuilder.StreamNested<>(this); } @Override public AstAbortedNodeBuilder.StreamNested<ScriptNested<R>> addAbortedEvent() { return new AstAbortedNodeBuilder.StreamNested<>(this); } @Override public AstReadAwaitNodeBuilder.StreamNested<ScriptNested<R>> addReadAwaitBarrier() { return new AstReadAwaitNodeBuilder.StreamNested<>(this); } @Override public AstReadNotifyNodeBuilder.StreamNested<ScriptNested<R>> addReadNotifyBarrier() { return new AstReadNotifyNodeBuilder.StreamNested<>(this); } @Override public AstWriteAwaitNodeBuilder.StreamNested<ScriptNested<R>> addWriteAwaitBarrier() { return new AstWriteAwaitNodeBuilder.StreamNested<>(this); } @Override public AstWriteNotifyNodeBuilder.StreamNested<ScriptNested<R>> addWriteNotifyBarrier() { return new AstWriteNotifyNodeBuilder.StreamNested<>(this); } @Override public R done() { AstScriptNode scriptNode = result.node; scriptNode.getStreams().add(node); return result; } @Override public AstReadConfigNodeBuilder.StreamNested<ScriptNested<R>> addReadConfigEvent() { return new AstReadConfigNodeBuilder.StreamNested<>(this); } @Override public AstWriteConfigNodeBuilder.StreamNested<ScriptNested<R>> addWriteConfigCommand() { return new AstWriteConfigNodeBuilder.StreamNested<>(this); } @Override public AstFlushNodeBuilder.StreamNested<ScriptNested<R>> addFlushCommand() { return new AstFlushNodeBuilder.StreamNested<>(this); } @Override public AstReadClosedNodeBuilder.StreamNested<ScriptNested<R>> addReadCloseCommand() { return new AstReadClosedNodeBuilder.StreamNested<>(this); } @Override public AstWriteCloseNodeBuilder.StreamNested<ScriptNested<R>> addWriteCloseCommand() { return new AstWriteCloseNodeBuilder.StreamNested<>(this); } @Override public AstReadOptionNodeBuilder.StreamNested<ScriptNested<R>> addReadOption() { return new AstReadOptionNodeBuilder.StreamNested<>(this); } @Override public AstWriteOptionNodeBuilder.StreamNested<ScriptNested<R>> addWriteOption() { return new AstWriteOptionNodeBuilder.StreamNested<>(this); } } public static final class AcceptNested<R extends AbstractAstNodeBuilder<? extends AstAcceptNode, ?>> extends AbstractAstAcceptableNodeBuilder<R> { public AcceptNested(R builder) { super(builder); } public AcceptNested<R> setAcceptName(String acceptName) { node.setAcceptName(acceptName); return this; } @Override public AstOpenedNodeBuilder.StreamNested<AcceptNested<R>> addOpenedEvent() { return new AstOpenedNodeBuilder.StreamNested<>(this); } @Override public AstBoundNodeBuilder.StreamNested<AcceptNested<R>> addBoundEvent() { return new AstBoundNodeBuilder.StreamNested<>(this); } @Override public AstConnectedNodeBuilder.StreamNested<AcceptNested<R>> addConnectedEvent() { return new AstConnectedNodeBuilder.StreamNested<>(this); } @Override public AstReadNodeBuilder.StreamNested<AcceptNested<R>> addReadEvent() { return new AstReadNodeBuilder.StreamNested<>(this); } @Override public AstDisconnectedNodeBuilder.StreamNested<AcceptNested<R>> addDisconnectedEvent() { return new AstDisconnectedNodeBuilder.StreamNested<>(this); } @Override public AstUnboundNodeBuilder.StreamNested<AcceptNested<R>> addUnboundEvent() { return new AstUnboundNodeBuilder.StreamNested<>(this); } @Override public AstClosedNodeBuilder.StreamNested<AcceptNested<R>> addClosedEvent() { return new AstClosedNodeBuilder.StreamNested<>(this); } @Override public AstWriteNodeBuilder.StreamNested<AcceptNested<R>> addWriteCommand() { return new AstWriteNodeBuilder.StreamNested<>(this); } @Override public AstDisconnectNodeBuilder.StreamNested<AcceptNested<R>> addDisconnectCommand() { return new AstDisconnectNodeBuilder.StreamNested<>(this); } @Override public AstUnbindNodeBuilder.StreamNested<AcceptNested<R>> addUnbindCommand() { return new AstUnbindNodeBuilder.StreamNested<>(this); } @Override public AstCloseNodeBuilder.StreamNested<AcceptNested<R>> addCloseCommand() { return new AstCloseNodeBuilder.StreamNested<>(this); } @Override public AstAbortNodeBuilder.StreamNested<AcceptNested<R>> addAbortCommand() { return new AstAbortNodeBuilder.StreamNested<>(this); } @Override public AstAbortedNodeBuilder.StreamNested<AcceptNested<R>> addAbortedEvent() { return new AstAbortedNodeBuilder.StreamNested<>(this); } @Override public AstReadAwaitNodeBuilder.StreamNested<AcceptNested<R>> addReadAwaitBarrier() { return new AstReadAwaitNodeBuilder.StreamNested<>(this); } @Override public AstReadNotifyNodeBuilder.StreamNested<AcceptNested<R>> addReadNotifyBarrier() { return new AstReadNotifyNodeBuilder.StreamNested<>(this); } @Override public AstWriteAwaitNodeBuilder.StreamNested<AcceptNested<R>> addWriteAwaitBarrier() { return new AstWriteAwaitNodeBuilder.StreamNested<>(this); } @Override public AstWriteNotifyNodeBuilder.StreamNested<AcceptNested<R>> addWriteNotifyBarrier() { return new AstWriteNotifyNodeBuilder.StreamNested<>(this); } @Override public R done() { AstAcceptNode acceptNode = result.node; acceptNode.getAcceptables().add(node); return result; } @Override public AstReadOptionNodeBuilder.StreamNested<AcceptNested<R>> addReadOption() { return new AstReadOptionNodeBuilder.StreamNested<>(this); } @Override public AstWriteOptionNodeBuilder.StreamNested<AcceptNested<R>> addWriteOption() { return new AstWriteOptionNodeBuilder.StreamNested<>(this); } @Override public AstReadConfigNodeBuilder.StreamNested<AcceptNested<R>> addReadConfigEvent() { return new AstReadConfigNodeBuilder.StreamNested<>(this); } @Override public AstWriteConfigNodeBuilder.StreamNested<AcceptNested<R>> addWriteConfigCommand() { return new AstWriteConfigNodeBuilder.StreamNested<>(this); } @Override public AstFlushNodeBuilder.StreamNested<AcceptNested<R>> addFlushCommand() { return new AstFlushNodeBuilder.StreamNested<>(this); } @Override public AstReadClosedNodeBuilder.StreamNested<AcceptNested<R>> addReadCloseCommand() { return new AstReadClosedNodeBuilder.StreamNested<>(this); } @Override public AstWriteCloseNodeBuilder.StreamNested<AcceptNested<R>> addWriteCloseCommand() { return new AstWriteCloseNodeBuilder.StreamNested<>(this); } } }