// Path: src/main/java/org/bigtesting/fixd/capture/impl/SimpleCapturedRequest.java
// public class SimpleCapturedRequest implements CapturedRequest {
// 
//     private final Request request;
//     
//     private boolean broadcast = false;
//     
//     public SimpleCapturedRequest(Request request) {
//         this.request = request;
//     }
//     
//     public String getPath() {
//         
//         return request.getPath().getPath();
//     }
// 
//     public String getRequestLine() {
//         
//         return headerLines()[0];
//     }
// 
//     public String getMethod() {
//         
//         return request.getMethod();
//     }
// 
//     public List<String> getHeaders() {
//         
//         List<String> headers = new ArrayList<String>();
//         String[] lines = headerLines();
//         for (int i = 1; i < lines.length; i++) {
//             headers.add(lines[i]);
//         }
//         
//         return headers;
//     }
// 
//     public byte[] getBody() {
//         
//         try {
//             return RequestUtils.readBody(request.getInputStream());
//         } catch (IOException e) {
//             throw new RuntimeException("error getting body", e);
//         }
//     }
// 
//     public String getBody(String encoding) {
//         
//         try {
//             
//             return new String(getBody(), encoding);
//             
//         } catch (UnsupportedEncodingException e) {
//             throw new RuntimeException("error getting encoded body", e);
//         }
//     }
//     
//     private String[] headerLines() {
//         
//         String header = request.getHeader().toString();
//         return header.split("\\r?\\n");
//     }
//     
//     public void setBroadcast(boolean broadcast) {
//         
//         this.broadcast = broadcast;
//     }
//     
//     public boolean isBroadcast() {
//         
//         return broadcast;
//     }
// }
// 
// Path: src/main/java/org/bigtesting/fixd/core/Upon.java
// public class Upon {
// 
//     private final Method method;
//     private final String resource;
//     private final String contentType;
//     private final RequestHandlerImpl handler;
//     
//     public Upon(Method method, String resource, RequestHandlerImpl handler) {
//         this(method, resource, null, handler);
//     }
//     
//     public Upon(Method method, String resource, String contentType, 
//             RequestHandlerImpl handler) {
//         
//         this.method = method;
//         this.resource = resource;
//         this.contentType = contentType;
//         this.handler = handler;
//     }
// 
//     public Method getMethod() {
//         return method;
//     }
//     
//     public String getResource() {
//         return resource;
//     }
//     
//     public String getContentType() {
//         return contentType;
//     }
//     
//     public RequestHandlerImpl getHandler() {
//         return handler;
//     }
// }


import org.bigtesting.fixd.capture.impl.SimpleCapturedRequest;
import org.bigtesting.fixd.core.Upon;
import org.bigtesting.routd.Route;
import org.simpleframework.http.Request;
/*
 * Copyright (C) 2015 BigTesting.org
 *
 * 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.bigtesting.fixd.core.async;


/**
 * 
 * @author Luis Antunes
 */
public class Broadcast {
    
    private final Request request;
    private final Route route;
    private final Upon upon;
    private final SimpleCapturedRequest captured;
    
// Path: src/main/java/org/bigtesting/fixd/capture/impl/SimpleCapturedRequest.java
// public class SimpleCapturedRequest implements CapturedRequest {
// 
//     private final Request request;
//     
//     private boolean broadcast = false;
//     
//     public SimpleCapturedRequest(Request request) {
//         this.request = request;
//     }
//     
//     public String getPath() {
//         
//         return request.getPath().getPath();
//     }
// 
//     public String getRequestLine() {
//         
//         return headerLines()[0];
//     }
// 
//     public String getMethod() {
//         
//         return request.getMethod();
//     }
// 
//     public List<String> getHeaders() {
//         
//         List<String> headers = new ArrayList<String>();
//         String[] lines = headerLines();
//         for (int i = 1; i < lines.length; i++) {
//             headers.add(lines[i]);
//         }
//         
//         return headers;
//     }
// 
//     public byte[] getBody() {
//         
//         try {
//             return RequestUtils.readBody(request.getInputStream());
//         } catch (IOException e) {
//             throw new RuntimeException("error getting body", e);
//         }
//     }
// 
//     public String getBody(String encoding) {
//         
//         try {
//             
//             return new String(getBody(), encoding);
//             
//         } catch (UnsupportedEncodingException e) {
//             throw new RuntimeException("error getting encoded body", e);
//         }
//     }
//     
//     private String[] headerLines() {
//         
//         String header = request.getHeader().toString();
//         return header.split("\\r?\\n");
//     }
//     
//     public void setBroadcast(boolean broadcast) {
//         
//         this.broadcast = broadcast;
//     }
//     
//     public boolean isBroadcast() {
//         
//         return broadcast;
//     }
// }
// 
// Path: src/main/java/org/bigtesting/fixd/core/Upon.java
// public class Upon {
// 
//     private final Method method;
//     private final String resource;
//     private final String contentType;
//     private final RequestHandlerImpl handler;
//     
//     public Upon(Method method, String resource, RequestHandlerImpl handler) {
//         this(method, resource, null, handler);
//     }
//     
//     public Upon(Method method, String resource, String contentType, 
//             RequestHandlerImpl handler) {
//         
//         this.method = method;
//         this.resource = resource;
//         this.contentType = contentType;
//         this.handler = handler;
//     }
// 
//     public Method getMethod() {
//         return method;
//     }
//     
//     public String getResource() {
//         return resource;
//     }
//     
//     public String getContentType() {
//         return contentType;
//     }
//     
//     public RequestHandlerImpl getHandler() {
//         return handler;
//     }
// }


// Path: src/main/java/org/bigtesting/fixd/core/async/Broadcast.java
import org.bigtesting.fixd.capture.impl.SimpleCapturedRequest;
import org.bigtesting.fixd.core.Upon;
import org.bigtesting.routd.Route;
import org.simpleframework.http.Request;

/*
 * Copyright (C) 2015 BigTesting.org
 *
 * 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.bigtesting.fixd.core.async;


/**
 * 
 * @author Luis Antunes
 */
public class Broadcast {
    
    private final Request request;
    private final Route route;
    private final Upon upon;
    private final SimpleCapturedRequest captured;
    
    public Broadcast(Request request, Route route, Upon upon, 