class RawObjectCreator implements IRoutedObjectCreator {

    @Override
    public void createObject(final IRouter router, final IObject description)
            throws ObjectCreationException, InvalidArgumentException {
        if (null == router) {
            throw new InvalidArgumentException("Router should not be null.");
        }

        if (null == description) {
            throw new InvalidArgumentException("Description should not be null.");
        }

        try {
            Object address = IOC.resolve(Keys.getOrAdd("route_from_object_name"), description.getValue(nameFieldName));
            Object receiver = IOC.resolve(Keys.getOrAdd(String.valueOf(description.getValue(dependencyFieldName))), description);

            if (!(receiver instanceof IMessageReceiver)) {
                throw new ObjectCreationException("Resolved dependency does not implement receiver interface.");
            }

            router.register(address, (IMessageReceiver) receiver);
        } catch (ReadValueException | InvalidArgumentException | ResolutionException e) {
            throw new ObjectCreationException("Error occurred creating the receiver.", e);
        }
    }

    public  RawObjectCreator();

}