/**
* 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.AstConnectNode;
import org.kaazing.k3po.lang.internal.ast.AstScriptNode;
import org.kaazing.k3po.lang.internal.ast.value.AstLocation;
public final class AstConnectNodeBuilder extends AbstractAstConnectNodeBuilder<AstConnectNode> {
public AstConnectNodeBuilder() {
this(new AstConnectNode());
}
public AstConnectNodeBuilder setLocation(AstLocation location) {
node.setLocation(location);
return this;
}
public AstConnectNodeBuilder setBarrier(String barrier) {
node.setAwaitName(barrier);
return this;
}
@Override
public AstOpenedNodeBuilder.StreamNested<AstConnectNodeBuilder> addOpenedEvent() {
return new AstOpenedNodeBuilder.StreamNested<>(this);
}
@Override
public AstBoundNodeBuilder.StreamNested<AstConnectNodeBuilder> addBoundEvent() {
return new AstBoundNodeBuilder.StreamNested<>(this);
}
@Override
public AstConnectedNodeBuilder.StreamNested<AstConnectNodeBuilder> addConnectedEvent() {
return new AstConnectedNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadNodeBuilder.StreamNested<AstConnectNodeBuilder> addReadEvent() {
return new AstReadNodeBuilder.StreamNested<>(this);
}
@Override
public AstDisconnectedNodeBuilder.StreamNested<AstConnectNodeBuilder> addDisconnectedEvent() {
return new AstDisconnectedNodeBuilder.StreamNested<>(this);
}
@Override
public AstUnboundNodeBuilder.StreamNested<AstConnectNodeBuilder> addUnboundEvent() {
return new AstUnboundNodeBuilder.StreamNested<>(this);
}
@Override
public AstClosedNodeBuilder.StreamNested<AstConnectNodeBuilder> addClosedEvent() {
return new AstClosedNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteNodeBuilder.StreamNested<AstConnectNodeBuilder> addWriteCommand() {
return new AstWriteNodeBuilder.StreamNested<>(this);
}
@Override
public AstDisconnectNodeBuilder.StreamNested<AstConnectNodeBuilder> addDisconnectCommand() {
return new AstDisconnectNodeBuilder.StreamNested<>(this);
}
@Override
public AstUnbindNodeBuilder.StreamNested<AstConnectNodeBuilder> addUnbindCommand() {
return new AstUnbindNodeBuilder.StreamNested<>(this);
}
@Override
public AstCloseNodeBuilder.StreamNested<AstConnectNodeBuilder> addCloseCommand() {
return new AstCloseNodeBuilder.StreamNested<>(this);
}
@Override
public AstAbortNodeBuilder.StreamNested<AstConnectNodeBuilder> addAbortCommand() {
return new AstAbortNodeBuilder.StreamNested<>(this);
}
@Override
public AstAbortedNodeBuilder.StreamNested<AstConnectNodeBuilder> addAbortedEvent() {
return new AstAbortedNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadAwaitNodeBuilder.StreamNested<AstConnectNodeBuilder> addReadAwaitBarrier() {
return new AstReadAwaitNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadNotifyNodeBuilder.StreamNested<AstConnectNodeBuilder> addReadNotifyBarrier() {
return new AstReadNotifyNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteAwaitNodeBuilder.StreamNested<AstConnectNodeBuilder> addWriteAwaitBarrier() {
return new AstWriteAwaitNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteNotifyNodeBuilder.StreamNested<AstConnectNodeBuilder> addWriteNotifyBarrier() {
return new AstWriteNotifyNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadOptionNodeBuilder.StreamNested<AstConnectNodeBuilder> addReadOption() {
return new AstReadOptionNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteOptionNodeBuilder.StreamNested<AstConnectNodeBuilder> addWriteOption() {
return new AstWriteOptionNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadConfigNodeBuilder.StreamNested<AstConnectNodeBuilder> addReadConfigEvent() {
return new AstReadConfigNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteConfigNodeBuilder.StreamNested<AstConnectNodeBuilder> addWriteConfigCommand() {
return new AstWriteConfigNodeBuilder.StreamNested<>(this);
}
@Override
public AstFlushNodeBuilder.StreamNested<AstConnectNodeBuilder> addFlushCommand() {
return new AstFlushNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadClosedNodeBuilder.StreamNested<AstConnectNodeBuilder> addReadCloseCommand() {
return new AstReadClosedNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteCloseNodeBuilder.StreamNested<AstConnectNodeBuilder> addWriteCloseCommand() {
return new AstWriteCloseNodeBuilder.StreamNested<>(this);
}
@Override
public AstConnectNode done() {
return result;
}
private AstConnectNodeBuilder(AstConnectNode node) {
super(node, node);
}
public static final class ScriptNested<R extends AbstractAstNodeBuilder<? extends AstScriptNode, ?>> extends
AbstractAstConnectNodeBuilder<R> {
public ScriptNested(R builder) {
super(new AstConnectNode(), builder);
}
public ScriptNested<R> setLocation(AstLocation location) {
node.setLocation(location);
return this;
}
public ScriptNested<R> setTransport(AstLocation transport) {
node.getOptions().put("transport", transport);
return this;
}
public ScriptNested<R> setBarrier(String barrier) {
node.setAwaitName(barrier);
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 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);
}
@Override
public R done() {
AstScriptNode scriptNode = result.node;
scriptNode.getStreams().add(node);
return result;
}
}
}