268 Lotus blogs updated hourly. Who will post next? Home | Blogs | Search | About 
 
Latest 7 Posts
Vaadin IBM Challenge
Mon, Dec 14th 2015 8
Things I never blogged about: XPages & Google’s EventBus
Tue, Dec 1st 2015 10
Things I never blogged about: The XPagesExecutor Service
Sun, Nov 29th 2015 8
[Discontunued] Testing XPages(3): Testing the Business Logic
Sat, Nov 28th 2015 8
Debug Retrofit REST applications
Fri, Nov 27th 2015 12
Testing XPages (2): BrowserMob Proxy
Thu, Sep 17th 2015 13
Testing XPages
Wed, Sep 16th 2015 10
Top 10
Hardening SSH vs. Eclipse RSE
Tue, Jan 13th 2015 13
Testing XPages (2): BrowserMob Proxy
Thu, Sep 17th 2015 13
Debug Retrofit REST applications
Fri, Nov 27th 2015 12
Yii: GridView’s selectionChanged not working on iOS
Tue, Jan 13th 2015 11
Testing XPages
Wed, Sep 16th 2015 10
Things I never blogged about: XPages & Google’s EventBus
Tue, Dec 1st 2015 10
XPages: Bindings, SSJS, EL and Bindings
Thu, Jul 2nd 2015 9
XPages: A Bootstrap Skin for CKEditor
Mon, Mar 17th 2014 8
XPages: WebContent Files (3) – Create a Minimizer Servlet
Thu, Nov 27th 2014 8
[Discontunued] Testing XPages(3): Testing the Business Logic
Sat, Nov 28th 2015 8


Sven Hasselbach
Blog Title blog@hasselba.ch
Blog URL http://blog.hasselba.ch
RSS Feed http://hasselba.ch/blog/?feed=rss2
Validate Feed feedvalidator.org or validator.w3.org
Feed Last Checked Feb 05, 2016 3:29:42 PM EST. Realtime Update:
Location Wiesbaden, Hessen, Germany


Recent Blog Posts
8
Vaadin IBM Challenge
Mon, Dec 14th 2015 3:40a   Sven Hasselbach
Since two weeks the Vaadin IBM challenge is over. While I was only able to do the bare minimum, I really enjoyed the different tasks (see here for list of steps). Congrats to the winners! And thanks to the Vaading Team & IBM for this exciting experience.
10
Things I never blogged about: XPages & Google’s EventBus
Tue, Dec 1st 2015 8:36a   Sven Hasselbach
This is another topic I wanted to blog about for a long time: The use of Google’s EventBus in XPages applications. EventBus is a replacement for the Java in-process event distribution. It makes life a lot easier. My first plan was to add the guava.jar into an OSGi plugin because of security reasons (otherwise you have to use the „grant{ permission java.security.AllPermission;}„) but I never had the time. That’s why I created a simple example which uses the jar in the lib/
8
Things I never blogged about: The XPagesExecutor Service
Sun, Nov 29th 2015 9:55a   Sven Hasselbach
The XPages engine has its own executor service to run jobs concurrently in another thread: the XPagesExecutor service. Under the hood, the service uses a ThreadPoolExecutor for executing tasks, so it allows to use Runnables or Callables/Futures for asynchronous computation. For fun, you can even run a server instance, the started threads can run as long as you want (e.g. they are not bound to the XPages lifecycle). Here is a small XPage with a button to start a Runnable via the Executor:  
8
[Discontunued] Testing XPages(3): Testing the Business Logic
Sat, Nov 28th 2015 7:47a   Sven Hasselbach
I will not develop my planned XPages Testing Framework further because for me it has no business case anymore. While there never was enough time to make it to a „real project“ for the daily development (full JUnit integration, deployed as an OSGi plugin etc) and this code is only an example, I used this technique with another code base in some projects. It was a big help during development, because it allows to „look inside“ the XPages engine while testing. How does it wo
12
Debug Retrofit REST applications
Fri, Nov 27th 2015 3:34p   Sven Hasselbach
Today I had some problems with designing a Retrofit REST application, so I needed a way to debug the request and the response from the server. After poking around, I found the HttpLoggingInterceptor from OkHttp.  It provides all the functionality I need and is really easy to implement. First you have create a OkHttpClient instance, add the interceptor and set the debug level to HttpLoggingInterceptor.Level.BODY: OkHttpClient client = new OkHttpClient(); HttpLoggingInterceptor interceptor = new
13
Testing XPages (2): BrowserMob Proxy
Thu, Sep 17th 2015 6:36a   Sven Hasselbach
When testing XPages or other web applications, you may want to have more control about the requests and responses during the JUnit testing. For example, if you want to test if a specific HTTP header exists in the response, or if it is required to add some HTTP headers to the request. But you cannot doe this out of the box with Selenium. Instead, you have to add a proxy to the Firefox controller, which then gives you a handle to the HTTP data and allows you to control the flow. An good soluti
10
Testing XPages
Wed, Sep 16th 2015 3:06a   Sven Hasselbach
When testing XPages with Selenium, you can easily pre-generate the JUnit test code with the browser plugin. But when you then change the structure of the XPage (f.e. by moving the components from an XPage to a custom control), all the IDs of the JUnit test will not work anymore. That’s why it is better to use CSS selectors to access the generated fields: driver.findElements(By.cssSelector("input[id*='idOfTheComponent']")); With the selector „id*=’idOfTheComponent'“
4
Android Development
Tue, Sep 15th 2015 8:06a   Sven Hasselbach
While I had a lot of work to do in my daily business, I was still able to complete five of six MOOCs about Android development during the last monthes. The courses were very cool, especially the ones about Concurrency and Security. Topics covered during the MOOCs: Screen configurations and sizes Activity Class, Intents and Permission, Fragments Designing user interfaces Notifying users about important events Handling concurrency Acquiring data over the network Leveraging multimedia and graphic
7
XPages: A ClientSide State
Sun, Sep 13th 2015 2:54p   Sven Hasselbach
I have created a ClientSide State for XPages, which allows horizontal scaling of XPages applications with a single click. After installing the OSGi Plugin on the servers and the DDE, you can activate it with a single click: Then, the State of the XPages application is stored on client side (in the field „$$clientstate„), and not on the server anymore. The State is AES-128 encrypted and uses some random bytes for a higher security. You can find the code on GitHub.
6
The XPages EL Directory
Wed, Jul 8th 2015 7:39a   Sven Hasselbach
I am currently working on an overview of availaible objects and properties for XPages Expression Language. A first incomplete and horrible designed version can be found here.
9
XPages: Bindings, SSJS, EL and Bindings
Thu, Jul 2nd 2015 3:01a   Sven Hasselbach
Because of reasons you should already know I avoid the use of SSJS in my XPages applications, but there are still some parts which can be easy realized in SSJS, but with EL only with a lot of effort. One of this things is accessing properties of a component which has only a getter or a setter – this will not work when using a binding. Let’s look for example at repeat control which is bound to the variable repeat. It can be easily accessed everywhere in SSJS, EL or Java, and it i
6
XPages: An optimized JavaScript Resource Renderer
Sun, Jun 21st 2015 5:27a   Sven Hasselbach
Ferry Kranenburg created a nice hack to solve the AMD loader problem with XPages and Dojo, and because of the missing ability to add a resource to the bottom of an XPage by a property, I have created a new JavaScriptRenderer which allows to control where a CSJS script will be rendered. The renderer has multiple options: NORMAL – handles the CSJS resource as always ASYNC – loads the script in an asynchronous way (with an own script tag) NOAMD – adds the no amd scripts around th
5
xsp.application.context.proxy
Wed, Jun 17th 2015 4:59a   Sven Hasselbach
Just a reminder for myself: To use a CDN for XPage resources, you can add a leading slash to the xsp.application.context.proxy property. xsp.application.context.proxy=/cdn.hasselba.ch
7
XPages: Running Google’s Chrome V8 Javascript Engine (2)
Fri, Apr 10th 2015 12:51p   Sven Hasselbach
A while ago I tried to run Google’s V8 Javascript engine on top of XPages, and today I found the reason why my server crashed after the first click: I have tried to load the engine only once (statically), and that killed Domino completly. Today I moved the code back into the processAction method, and now it works without problems. package ch.hasselba.xpages.jav8; import javax.faces.event.AbortProcessingException; import javax.faces.event.ActionEvent; import javax.script.ScriptEngine;
7
XPages: Empty HTML5 Attibutes & PassThroughTags
Tue, Mar 10th 2015 4:28p   Sven Hasselbach
A while ago I developed some HTML5 XPages applications, but the development process was a little bit frustrating because of the missing possibility to add empty attributes to a PassThroughTag.  A single empty attribute is not allowed, because this would result in invalid XML, and you cannot use “xp:attributes” with “UIPassThroughTag” components. A simple example like this… … always ended up in something like this: To fit my requirements, I had
6
REST & Security: Why HTTP GET is insecure (and the other methods too)
Thu, Feb 26th 2015 5:22a   Sven Hasselbach
Yesterday René commented that submitting username and password with HTTP GET is insecure, because they are submitted in clear text over the wire as part of the URI. At the first moment, I did not give some thought about it, because it is known fact that data added to an URI are less secure. They are added to the browser history, are logged in the requests on servers, and every proxy between the user’s browser and the requested server are seeing (and maybe logging) these URI’s
3
Rest & Security: More about the DominoStatelessTokenServlet
Wed, Feb 25th 2015 6:01a   Sven Hasselbach
During the last days I have refined the DominoStatelessTokenServlet a little bit. It is now a pre-beta release, and I think it is time to explain some details about it. While it is still a proof-of-concept, it demonstrates how a stateless authentication can easily be implemented. A lot of testing is still required until it is ready for production use, but I think it provides really cool things for the domino environment. First, it fixes the problematic 200er HTTP response code when an authentica




Created and Maintained by Yancy Lent - About - Planet Lotus Blog - Advertising - Mobile Edition