/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.apache.wicket.protocol.ws.util.tester; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.wicket.util.string.Strings; import org.junit.Assert; import org.apache.wicket.protocol.ws.api.WebSocketRequestHandler; import org.apache.wicket.protocol.ws.api.WebSocketResource; import org.apache.wicket.protocol.ws.api.message.AbortedMessage; import org.apache.wicket.protocol.ws.api.message.BinaryMessage; import org.apache.wicket.protocol.ws.api.message.ClosedMessage; import org.apache.wicket.protocol.ws.api.message.ConnectedMessage; import org.apache.wicket.protocol.ws.api.message.TextMessage; /** * */ public class TestWebSocketResource extends WebSocketResource { static final String TEXT = "TestWebSocketResource-text"; static final String BINARY = "TestWebSocketResource-binary"; static final AtomicBoolean ON_CONNECT_CALLED = new AtomicBoolean(false); static final AtomicBoolean ON_CLOSE_CALLED = new AtomicBoolean(false); static final AtomicBoolean ON_ABORT_CALLED = new AtomicBoolean(false); private final String expectedMessage; private final byte[] expectedBinaryMessage; private final int expectedOffset; private final int expectedLength; TestWebSocketResource(String expected) { this.expectedMessage = expected; this.expectedBinaryMessage = null; this.expectedOffset = -1; this.expectedLength = -1; } TestWebSocketResource(byte[] message, int offset, int length) { this.expectedBinaryMessage = message; this.expectedOffset = offset; this.expectedLength = length; this.expectedMessage = null; } @Override protected void onConnect(ConnectedMessage message) { super.onConnect(message); ON_CONNECT_CALLED.set(true); } @Override protected void onClose(ClosedMessage message) { ON_CLOSE_CALLED.set(true); super.onClose(message); } @Override protected void onAbort(AbortedMessage message) { ON_ABORT_CALLED.set(true); super.onAbort(message); } @Override protected void onMessage(WebSocketRequestHandler handler, TextMessage message) { super.onMessage(handler, message); String text = message.getText(); Assert.assertEquals(expectedMessage, text); handler.push(Strings.capitalize(text)); } @Override protected void onMessage(WebSocketRequestHandler handler, BinaryMessage binaryMessage) { super.onMessage(handler, binaryMessage); byte[] data = binaryMessage.getData(); int offset = binaryMessage.getOffset(); int length = binaryMessage.getLength(); Assert.assertEquals(expectedBinaryMessage, data); Assert.assertEquals(expectedOffset, offset); Assert.assertEquals(expectedLength, length); handler.push(data, offset, length); } }