/**
* 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.AstScriptNode;
import org.kaazing.k3po.lang.internal.ast.value.AstLocation;
public final class AstAcceptNodeBuilder extends AbstractAstAcceptNodeBuilder<AstAcceptNode> {
public AstAcceptNodeBuilder() {
this(new AstAcceptNode());
}
public AstAcceptNodeBuilder setLocation(AstLocation location) {
node.setLocation(location);
return this;
}
public AstAcceptNodeBuilder setAcceptName(String acceptName) {
node.setAcceptName(acceptName);
return this;
}
@Override
public AstOpenedNodeBuilder.StreamNested<AstAcceptNodeBuilder> addOpenedEvent() {
return new AstOpenedNodeBuilder.StreamNested<>(this);
}
@Override
public AstBoundNodeBuilder.StreamNested<AstAcceptNodeBuilder> addBoundEvent() {
return new AstBoundNodeBuilder.StreamNested<>(this);
}
@Override
public AstChildOpenedNodeBuilder.StreamNested<AstAcceptNodeBuilder> addChildOpenedEvent() {
return new AstChildOpenedNodeBuilder.StreamNested<>(this);
}
@Override
public AstChildClosedNodeBuilder.StreamNested<AstAcceptNodeBuilder> addChildClosedEvent() {
return new AstChildClosedNodeBuilder.StreamNested<>(this);
}
@Override
public AstUnboundNodeBuilder.StreamNested<AstAcceptNodeBuilder> addUnboundEvent() {
return new AstUnboundNodeBuilder.StreamNested<>(this);
}
@Override
public AstClosedNodeBuilder.StreamNested<AstAcceptNodeBuilder> addClosedEvent() {
return new AstClosedNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadAwaitNodeBuilder.StreamNested<AstAcceptNodeBuilder> addReadAwaitBarrier() {
return new AstReadAwaitNodeBuilder.StreamNested<>(this);
}
@Override
public AstReadNotifyNodeBuilder.StreamNested<AstAcceptNodeBuilder> addReadNotifyBarrier() {
return new AstReadNotifyNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteAwaitNodeBuilder.StreamNested<AstAcceptNodeBuilder> addWriteAwaitBarrier() {
return new AstWriteAwaitNodeBuilder.StreamNested<>(this);
}
@Override
public AstWriteNotifyNodeBuilder.StreamNested<AstAcceptNodeBuilder> addWriteNotifyBarrier() {
return new AstWriteNotifyNodeBuilder.StreamNested<>(this);
}
@Override
public AstAcceptNode done() {
return result;
}
private AstAcceptNodeBuilder(AstAcceptNode node) {
super(node, node);
}
public static final class ScriptNested<R extends AbstractAstNodeBuilder<? extends AstScriptNode, ?>> extends
AbstractAstAcceptNodeBuilder<R> {
public ScriptNested(R builder) {
super(new AstAcceptNode(), 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> setAcceptName(String acceptName) {
node.setAcceptName(acceptName);
return this;
}
public AstAcceptableNodeBuilder.AcceptNested<ScriptNested<R>> addAcceptedStream() {
return new AstAcceptableNodeBuilder.AcceptNested<>(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 AstChildOpenedNodeBuilder.StreamNested<ScriptNested<R>> addChildOpenedEvent() {
return new AstChildOpenedNodeBuilder.StreamNested<>(this);
}
@Override
public AstChildClosedNodeBuilder.StreamNested<ScriptNested<R>> addChildClosedEvent() {
return new AstChildClosedNodeBuilder.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 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;
}
}
}