// Copyright (c) 2011 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.sdk.internal.wip.protocol;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.chromium.sdk.internal.protocolparser.JsonProtocolModelParseException;
import org.chromium.sdk.internal.protocolparser.dynamicimpl.DynamicParserImpl;
import org.chromium.sdk.internal.wip.protocol.input.GeneratedParserInterfaceList;
import org.chromium.sdk.internal.wip.protocol.input.WipCommandResponse;
import org.chromium.sdk.internal.wip.protocol.input.WipEvent;
import org.chromium.sdk.internal.wip.protocol.input.WipProtocolParser;
import org.chromium.sdk.internal.wip.protocol.input.WipTabList;
/**
* A dynamic implementation of a WebInspector protocol parser.
*/
public class WipDynamicParser {
public static DynamicParserImpl<WipProtocolParser> create() {
Class<?>[] baseTypes = {
WipEvent.class, WipEvent.Data.class,
WipCommandResponse.class, WipCommandResponse.Data.class,
WipCommandResponse.Success.class, WipCommandResponse.Error.class,
WipCommandResponse.Error.ErrorInfo.class,
// Tab list protocol interfaces.
WipTabList.class, WipTabList.TabDescription.class
};
Class<?>[] generatedTypes = GeneratedParserInterfaceList.LIST;
List<Class<?>> classList = new ArrayList<Class<?>>();
classList.addAll(Arrays.asList(baseTypes));
classList.addAll(Arrays.asList(generatedTypes));
try {
return new DynamicParserImpl<WipProtocolParser>(WipProtocolParser.class, classList,
Collections.<DynamicParserImpl<?>>emptyList(), true);
} catch (JsonProtocolModelParseException e) {
throw new RuntimeException(e);
}
}
}