• Как создать регулярное выражение?

    @nikolaas Автор вопроса
    Спасибо, первы вариант то, что нужно
  • Как настроить мапинг запросов на ресурсы web-приложения?

    @nikolaas Автор вопроса
    Развернуть в ROOT могу, но как я написал выше, хотелось бы, чтобы работали оба варианта: с разворачиванием в ROOT и с разворачиванием в /api
  • Как настроить мапинг запросов на ресурсы web-приложения?

    @nikolaas Автор вопроса
    Я хотел, чтобы путь к методам начинался с версии по следующей причине: развернув приложение с контекстном путем /api, я получаю в результате запросы вида app.org/api/v1/someMethod, а развернув приложение в корне томката, но на поддомене, я получаю запросы вида api.app.org/v1/someMethod. Если сделать способом, который предложили вы, я не смогу разворачивать приложение с контекстным путем /api, потому что запросы будут иметь вид app.org/api/api/v1/someMethod. Вы сказали, что это самый простой способ. А есть сложнее?
    Насчет @RestController и ModelAndView это вы правы, поправлю.
  • Как запустить выполнение unit-тестов в Dojo?

    @nikolaas Автор вопроса
    Не влез вывод скрипта полностью, поэтому привожу его тут:
    stupak@stupak:~/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/test> ./dojo-test.sh -m jla/app/settings
                      PROJECT_DIR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app
                       SOURCE_DIR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js
                          JLA_DIR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/jla
                         DOJO_DIR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/dojo
                     ABS_DOJO_DIR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/dojo
                         BASE_URL:  file:///home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/dojo
                          DOJO_JS:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/dojo/dojo.js
                    TEST_EXECUTOR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/util/shrinksafe/js.jar
                      CONFIG_PATH:  file:///home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/test/dojo-test-config.js
    Test dojo modules:
                      CURRENT_DIR:  /home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/test
                          PROJECT:  /home/stupak/NetBeansProjects/jla-project/jla-web-app
                         EXECUTOR:  ../../../../../src/main/webapp/js/util/shrinksafe/js.jar
                          DOJO.JS:  ../../../../../src/main/webapp/js/dojo/dojo.js
                         BASE_URL:  file:///home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/dojo
                           CONFIG:  file:///home/stupak/NetBeansProjects/jla-project/jla-web-app/src/main/webapp/js/test/dojo-test-config.js
                             TEST:  jla/app/settings
    Testing...
    org.mozilla.javascript.WrappedException: Wrapped java.io.FileNotFoundException:  (Нет такого файла или каталога)
            at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1654)
            at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:175)
            at org.mozilla.javascript.FunctionObject.call(FunctionObject.java:411)
            at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
            at org.mozilla.javascript.gen.c2._c11(Unknown Source)
            at org.mozilla.javascript.gen.c2.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.callN(OptRuntime.java:86)
            at org.mozilla.javascript.gen.c1._c82(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
            at org.mozilla.javascript.gen.c1._c7(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
            at org.mozilla.javascript.gen.c1._c38(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:57)
            at org.mozilla.javascript.gen.c1._c74(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
            at org.mozilla.javascript.gen.c1._c37(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
            at org.mozilla.javascript.gen.c1._c42(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97)
            at org.mozilla.javascript.gen.c1._c11(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.ScriptRuntime.applyOrCall(ScriptRuntime.java:2347)
            at org.mozilla.javascript.BaseFunction.execIdCall(BaseFunction.java:272)
            at org.mozilla.javascript.IdFunctionObject.call(IdFunctionObject.java:127)
            at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
            at org.mozilla.javascript.gen.c1._c1(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.optimizer.OptRuntime.call2(OptRuntime.java:76)
            at org.mozilla.javascript.gen.c1._c0(Unknown Source)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401)
            at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003)
            at org.mozilla.javascript.gen.c1.call(Unknown Source)
            at org.mozilla.javascript.gen.c1.exec(Unknown Source)
            at org.mozilla.javascript.tools.shell.Main.evaluateScript(Main.java:526)
            at org.mozilla.javascript.tools.shell.Main.processFileSecure(Main.java:448)
            at org.mozilla.javascript.tools.shell.Main.processFile(Main.java:414)
            at org.mozilla.javascript.tools.shell.Main.processSource(Main.java:405)
            at org.mozilla.javascript.tools.shell.Main.processFiles(Main.java:179)
            at org.mozilla.javascript.tools.shell.Main$IProxy.run(Main.java:100)
            at org.mozilla.javascript.Context.call(Context.java:499)
            at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:511)
            at org.mozilla.javascript.tools.shell.Main.exec(Main.java:162)
            at org.mozilla.javascript.tools.shell.Main.main(Main.java:140)
    Caused by: java.io.FileNotFoundException:  (Нет такого файла или каталога)
            at java.io.FileInputStream.open0(Native Method)
            at java.io.FileInputStream.open(Unknown Source)
            at java.io.FileInputStream.<init>(Unknown Source)
            at java.io.FileInputStream.<init>(Unknown Source)
            at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
            at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
            at org.mozilla.javascript.tools.shell.Global.readUrl(Global.java:875)
            at org.mozilla.javascript.tools.shell.Global.readUrl(Global.java:661)
            at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160)
            ... 48 more
  • Как правильно разрешить циклические ссылки модулей в dojo?

    @nikolaas Автор вопроса
    В итоге, такая цепочка будет грузится следующим образом:
    1) начинаем грузить Collection, резолвим ее зависимость от TableView
    2) начинаем грузить TableView, резолвим ее зависимость от _Mixin
    3) начинаем грузить _Mixin резолвим ее зависимость от Collection
    4) тут лоадер увидит что Collection уже грузится и отдаст в фабрику модуля _Mixin пустой объект, а не Collection
  • Как правильно разрешить циклические ссылки модулей в dojo?

    @nikolaas Автор вопроса
    Если делать через отдельный миксин, то получается что зависимость все равно остается Collection -> TableView -> _Mixin -> Collection
  • Как правильно разрешить циклические ссылки модулей в dojo?

    @nikolaas Автор вопроса
    Не совсем так. Есть глобальный collectionManager у которого есть метод addCollection. В TableView я делаю:
    var collection = new Collection();
    //тут настройка collection
    collectionManager.addCollection(collection).
  • Как правильно разрешить циклические ссылки модулей в dojo?

    @nikolaas Автор вопроса
    А разве если мы вынесем часть функциональности в третий модуль, зависимость пропадает? Не получится так, что А зависит от B, B зависит от C, а C зависит от A?
  • Как правильно разрешить циклические ссылки модулей в dojo?

    @nikolaas Автор вопроса
    Задача в следующем. Есть класс Collection, который представляет из себя просто ContentPane, и предназначен чтобы отображать набор данных. Непосредственно за отображение отвечают классы TableView (внутри это DataGrid) и FormView (внутри это Form). В зависимости от некоторых параметров в наборе данных мы помещаем в Collection или TableView или FormView и показываем набор данных соответствующим образом: или как таблицу или как форму. Collection, TableView и FormView сделаны модулями. Нужно сделать, чтобы из TableView можно было открыть новую Collection, которая содержит FormView (типа действие "Добавить"). Вот и получается что Collection зависит от TableView, а в TableView, появляется зависимость от Collection.
  • Почему не работает рекурсивный sql-запрос?

    @nikolaas Автор вопроса
    CTE должно задаваться до SELECT-а, который его использует. Может в HSQLDB конечно другие правила, но, например, в postgresql это запрос отрабатывает правильно
  • Как сделать подгрузку изображений к списку?

    ну да. если вы переделаете как указано в последнем описании, то никакого ImageProvider у вас не будет же. И нужно просто при нажатии на кнопку получить изображение и установить его через canvas.setImage(image);
  • Как сделать подгрузку изображений к списку?

    Ну да. У вас статический метод, что не верно. Вся эта кухня с ImageProvider задумывалась для того, чтобы спрятать реализацию получения изображения в конкретном экземпляре ImageProvider, поэтому метод должен быть не статическим. Я вообще не понимаю, как у вас код скомпилировался )) В Java нельзя переопределять статические методы
  • Как сделать подгрузку изображений к списку?

    Вообще можно сделать проще. Заменить поле
    private ImageProvider imageProvider;
    на
    private Image image;
    ну и соответственно сеттер
    public void setImage(Image image) {
       this.image = image;
       repaint();
    }

    Тогда у вас TransformingCanvas упрощается: он теперь вообще не будет знать, что изображение нужно еще откуда-то брать, а будет просто рисовать только то что у него есть (т.е. один класс - одна задача).
    А при нажатии на кнопку вы уже делаете

    Image image = //тут получение изображения
    canvas.setImage(image);
    }

    Если решите изменять изображение не при нажатии на кнопку, а например, при выборе другого элемента в комбобоксе, то нужно будет просто вызвать этот код в слушателе изменения комбобокса
  • Как сделать подгрузку изображений к списку?

    ааа.. у вас метод ImageProvider.getImage() статический. сделайте его не статическим
  • Как сделать подгрузку изображений к списку?

    вот только судя по коду
    Image image = ImageProvider.getImage();
    вы вызываете метод getImage() на классе, а не на объекте. У вас поле называется imageProvider (с маленькой буквы), а вызов getImage() проиходит на ImageProvider (с большой буквы, а это уже не объект, а класс)