Skip to content

Instantly share code, notes, and snippets.

Avatar
⌨️
Studying IoT

Daniel Bevenius danbev

⌨️
Studying IoT
View GitHub Profile
@danbev
danbev / gist:1097034
Created Jul 21, 2011
CamelTestSupport example
View gist:1097034
public class SwitchyardComponentTest extends CamelTestSupport {
private String _serviceName = "testServiceName";
@Before
public void setup() throws Exception {
ServiceReferences.clear();
}
@Test
public void sendToSwitchyardInOut() throws Exception {
@danbev
danbev / CamelJMSBindingTest
Created Jul 13, 2012
SwitchYard Completion Event Notifier
View CamelJMSBindingTest
@SwitchYardTestCaseConfig(
config = SwitchYardTestCaseConfig.SWITCHYARD_XML,
mixins = {CDIMixIn.class, HornetQMixIn.class},
scanners = BeanSwitchYardScanner.class)
@RunWith(SwitchYardRunner.class)
public class CamelJMSBindingTest {
private static final String QUEUE_NAME = "GreetingServiceQueue";
private SwitchYardTestKit _testKit;
@danbev
danbev / gist:3128042
Created Jul 17, 2012
SwitchYardTestKit enhancements
View gist:3128042
/**
* Waits for an Exchange to complete and returns the content of the message that
* was recieved.
*
* @param type The type of the contents of the Message
* @return T an instance of type that is contents of the message.
*/
public <T> T waitForCompletion(Class<T> type) {
final CompletionNotifier<T> notifier = new CompletionNotifier<T>(type);
getServiceDomain().addEventObserver(notifier, ExchangeCompletionEvent.class);
@danbev
danbev / gist:3170072
Created Jul 24, 2012
Netty 4 WebSocket suggestion
View gist:3170072

Suggestion for Netty 4 WebSockets

This document is intended to explain a suggestion for an enhancement of the WebSocket support in Netty 4 and was only created to get feedback from the Netty team to see if this is a valid suggestion before putting any time and effort into it.

Netty has a very nice support for WebSockets and the examples provided work like a charm. This is one of the examples that come with Netty WebSocketServerHandler.java. In this example the WebSocketServerHandler takes care of everything in regard to the WebSocket request, and also acts as a simple web server to produce the html page used for running the example using a web browser.

The reason for this suggestion is that I wanted to implement a simple handler that receives a TextWebSocketFrame and not have to deal with other things like the Http Handshake.So I've created the following [branch](https

@danbev
danbev / gist:3305522
Created Aug 9, 2012
Route definitions explained
View gist:3305522

Below is how routes are defined in aerogear-controller:

Routes routes = new AbstractRoutingModule() {
    @Override
    public void configuration() {
        route()
                .from("/home")
                .on(GET)
                .to(SampleController.class).index();
    }
@danbev
danbev / xcodebuild.md
Created Aug 26, 2012
Building aerogear-ios with xcodebuild
View xcodebuild.md

Using xcodebuild to build AeroGear-iOS

The goal of this gist is to document the steps to build AeroGear-iOS using the command line tool xcodebuild. The reason for this could be that an CI server would require these steps, but it might also be handy for developers to be able to trigger a full build and run tests from the command line without having to start XCode.

Start with a newly cloned aerogear-ios, and change into the aerogear-ios directory (or what if you specified a different name when cloning use that name)

Some of the information in this gist was taken from different resources and this blog was a great help.

List the schemes in the workspace

When trying to list the schemes from the aerogear-ios from the command line I get the following (this is using a newly cloned gitrepo):

@danbev
danbev / websocket-enhancement.md
Created Sep 2, 2012
Netty 4 WebSocket enhancement
View websocket-enhancement.md

Netty 4 WebSocket

Netty has had WebSocket support for quite a while now and it is easy to get up an running quickly with the existing examples. The example provided with Netty, consists of a handler which takes care of the HTTP Upgrade handshake, and also manages the WebSocket protocol. If you need to service http requests, for example serving static files, in addition to WebSocket calls then this approach works great.

But if all you want to do is create a custom application protocol on top of WebSocket and only service WebSocket requests, then the above solution is a fair amount of code that you'll have to maintain yourself. So, we set out to try to simplify this and this post describes what we came up with.

Below is an example of implementing a handler that will receive a [TextWebSocketFrame](https://github.com/netty/netty/blob/master/codec-http/src/main/java/io/nett

@danbev
danbev / gist:3706418
Created Sep 12, 2012
Multiple Routes in a single deployment
View gist:3706418

What happens if you declare multiple implementations of AbstractRoutingModule?

You get the following deployment error:

13:41:36,425 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC00001: Failed to start service jboss.deployment.unit."aerogear-controller-demo.war".WeldService: org.jboss.msc.service.StartException in service jboss.deployment.unit."aerogear-controller-demo.war".WeldService: org.jboss.weld.exceptions.DeploymentException: WELD-001409 Ambiguous dependencies for type [RoutingModule] with qualifiers [@Default] at injection point [[parameter 1] of [constructor] @Inject public org.jboss.aerogear.controller.router.DefaultRouter(RoutingModule, BeanManager, ViewResolver, ControllerFactory, SecurityProvider)]. Possible dependencies [[Managed Bean [class org.jboss.aerogear.controller.demo.Routes2] with qualifiers [@Any @Default], Managed Bean [class org.jboss.aerogear.controller.demo.Routes] with qualifiers [@Any @Default]]]
	at org.jboss.as.weld.services.WeldService.start(WeldServic
@danbev
danbev / gist:3706552
Created Sep 12, 2012
What is Iogi used for in AeroGear Controller?
View gist:3706552

Iogi is used to unmarshall the HTTP Request and create a instance of a class, and populate that instance using values from the request parameters.

For example, when using the aerogear-controller-demo and entering the color and model of the car, the following parameters will be passed in the HTTP POST as form data:

car.color:red
car.brand:BMW

AeroGear Controller knows the type of the parameter for the target method, which it has gathered from the route configuration. By utilizing Iogi, it is very easy to create an instance of Car and populate its members color and brand:

@danbev
danbev / gist:3737360
Created Sep 17, 2012
AeroGear-Controller: Exception Handling
View gist:3737360