Wednesday, May 4, 2016

Java syntax hack

These are equivalent code segments:

Hacky syntax:

Map map = new HashMap() {{
   put("key", "value");
}};

Normal syntax:

Map map = new HashMap();
map.put("key", "value");

Decryption of encrypted syntax

First set of braces is the anonymous inner class (subclassing HashMap). The second set of braces is an instance initializer (rather than a static one) which then sets the values on your HashMap.

Usages

This hacky syntax could be used gracefully when initializing a class member. This way you will avoid adding code to constructor(s) or in static initializer of the class.

Anonymous class that “extends” other class or “implements” some interface in Java?

Anonymous classes in Java are defined in this way:

Syntax for implementing some interface:
Runnable r = new Runnable() {
   public void run() { ... }
};

Syntax for extending other class (is the same):
SomeClass x = new SomeClass() {
   ...
};


Thursday, January 14, 2016

Brief view in JAX-RS (Java API for RESTful Web Services)

What is JAX-RS

Java API for RESTful Web Services (JAX-RS) is a Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern.

JAX-RS is an official part of Java EE 6.

Annotations in JAX-RS 

JAX-RS uses these annotations:
 In addition, it provides further annotations to method parameters:
  • @PathParam binds the method parameter to a path segment.
  • @QueryParam binds the method parameter to the value of an HTTP query parameter.
  • @MatrixParam binds the method parameter to the value of an HTTP matrix parameter.
  • @HeaderParam binds the method parameter to an HTTP header value.
  • @CookieParam binds the method parameter to a cookie value.
  • @FormParam binds the method parameter to a form value.
  • @DefaultValue specifies a default value for the above bindings when the key is not found.
  • @Context returns the entire context of the object (for example @Context HttpServletRequest request).
 Source: wikipedia

Wednesday, November 25, 2015

Linux console commands test for developers

Questions for an linux interview:

1. extract lines containing ERROR from log file - grep
1.1 ignore-case grep
1.2 recursive grep
2. watch a log file when it grows - tail -f
3. check drives for free space: df -h
4. lsof - checks which processes are opened an file/folder
5. install packages to linux - apt-get install
6. look for a file on the drive - locate
7. I have written "locate hard-to-remember-file-o48275666.txt" before 100 console commands. How to remember file name when I remember only the prefix "hard-to-remember-"? - Ctrl + R locate hard-to-remember-file-
8. how to force stop all java processes
10. list all processes and sort them by memory usage / view free memory and swap usage

Monday, October 27, 2014

Example of @Embeddable and @Embedded in Hibernate Annotation

Here is shown the JPA approach of fine-grained object model in practice. It is implemented by JPA annotations @Embeddable and @Embedded. Nice real example is shown here:
http://www.concretepage.com/hibernate/example-embeddable-embedded-hibernate-annotation