Friday, June 6, 2014

How to test Soap services using Metro on Java SE

How to test Soap services using Metro on Java SE


package com.services;
import java.util.Date;
import javax.xml.ws.*;
/**
 *
 * @author name
 */
public class ServicePublisher {
    public static void main(String[]  args){
        CalculatorServiceImpl calculatorServiceImpl = new CalculatorServiceImpl();
        Endpoint.publish("http://127.0.0.1:10000/service", calculatorServiceImpl);
        System.out.println("Service Started: " + new Date().toString());
    }
}

Wednesday, March 19, 2014

JSF 2.2 Spring 4.X Configuration

JSF 2.2 with Spring 4.X


File : web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>  
    <context-param>
        <param-name>contextClass</param-name>
        <param-value>
            org.springframework.web.context.support.AnnotationConfigWebApplicationContext
        </param-value>
    </context-param>
    <!-- Configuration locations must consist of one or more comma- or space-delimited
        fully-qualified @Configuration classes. Fully-qualified packages may also be
        specified for component-scanning -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>com.org.config.AppConfig</param-value>
    </context-param>
    <!-- Bootstrap the root application context as usual using ContextLoaderListener -->
    <context-param>
        <param-name>contextAttribute</param-name>
        <param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet>
        <servlet-name>AppUserServlet</servlet-name>
        <servlet-class>com.org.servlet.AppUserServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>AppUserServlet</servlet-name>
        <url-pattern>/AppUserServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>

</web-app>




Initialize Web Config


import org.springframework.security.web.context.*;
public class SecurityWebApplicationInitializer
      extends AbstractSecurityWebApplicationInitializer {
    public SecurityWebApplicationInitializer() {
        super(WebSecurityConfig.class);
    }
}






import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 @Override
 protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception {
  authManagerBuilder
   .inMemoryAuthentication().withUser("test").password("test").roles("ADMIN");

    }
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/faces/login.xhtml")
                .permitAll();
    }
    //http://www.petrikainulainen.net/programming/spring-framework/adding-social-sign-in-to-a-spring-mvc-web-application-configuration/
    @Override
    public void configure(WebSecurity web) throws Exception {
        web
                //Spring Security ignores request to static resources such as CSS or JS files.
                .ignoring()
                    .antMatchers("/appContextRoot/faces/javax.faces.resource/**");
    }
             
}




Get AppContext from FacesContext;


ApplicationContext ctx = org.springframework.web.jsf.FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance());

Friday, March 14, 2014

JSF 2.2 HTML5

With JSF 2.2 you can now use html5 syntax and all you need for Jsf to process the element is jsf:id="", html passthroughs are allowed now,  See example below!


<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:h="http://xmlns.jcp.org/jsf/html"
      xmlns:p="http://xmlns.jcp.org/jsf/passthrough"
      xmlns:jsf="http://xmlns.jcp.org/jsf">
    <head jsf:id="head">
        <title>Facelet Title</title>
        <h:outputStylesheet name="css/app.css"/>
    </head>
<body>
<input class="span3" required="required" value="#{index.name}" jsf:id="name" name="name" placeholder="Full Name" type="text"/> 
</body>

</html>

Java Enum In Switch Statements

How to use Java Enums in Switch statements;  use Java 1.7 and up.

/**
 *
 * @author h@ppyF@ce
 */
public class LogicClass {

    enum Month {

        JANUARY(1),
        FEBRUARY(2);

        private final int monthCode;

        Month(int monthCode) {
            this.monthCode = monthCode;
        }

        public int getMonthCode() {
            return monthCode;
        }

    };

    public static void main(String... args) {
        Month ci = Month.FEBRUARY;
        switch (ci) {
            case JANUARY:
                System.out.println("1st");
                break;
            case FEBRUARY:
                System.out.println("2nd");
                break;
            default:
                System.out.println("default");
        }
    }
}

Thursday, August 8, 2013

Running an Apollo Broker Instance (from Apollo website)

Running an Apollo Broker Instance (from Apollo website)

Assuming you created the broker instance under /var/lib/mybroker all you need to do start running the broker instance is execute:
/var/lib/mybroker/bin/apollo-broker run
Now that the broker is running, you can optionally run some of the included examples to  verify the the broker is running properly.

Web Administration

Apollo provides a simple web interface to monitor the status of the broker. Once the admin interface will be accessible at:
The default login id and password is admin and password.

Saturday, June 1, 2013

Some code borrowed from BalusC.

//ServletCode for CSV Export
public static <T> void writeCsv (List<T> csv, char separator, OutputStream output) throws IOException {
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8"));
    System.out.println("Instance NextType: "+csv.getClass().getCanonicalName()+ " Size: "+ csv.size());
    //add headers here
        writer.append("ID").append(separator);
     
        writer.append("LOCATION").append(separator);
     
        writer.append("NAME").append(separator);
     
        writer.append("TYPE").append(separator);
     
        writer.append("FLAG").append(separator);
     
        writer.append("TIME1").append(separator);
     
        writer.append("SYSTIME").append(separator);
     
        writer.append("USERID");
        writer.newLine();

    for (T row : csv) {
            if(row instanceof entities.Item){
                Item item = (entities.Item)row;
                Integer itemid = item.getId();
                writer.append(itemid.toString()).append(separator);
                Date enteredtime = item.getTime1();
                if(time1 == null) {
                    writer.append(" ").append(separator);
                }
                else
                    writer.append(enteredtime1.toString()).append(separator);
                long userid = item.getUserid();
                writer.append(String.valueOf(userid));
.....
            }

        writer.newLine();
    }
    writer.flush();
}

    @EJB
    private beans.ItemFacade ejbFacade;
 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        List<Item> listOfObj = new ArrayList<Item>();

        listOfObj = ejbFacade.findAll();
        List<Item> csvList = new ArrayList<Item>();
    List<Item> csv = listOfObj;
    response.setHeader("Content-Type", "text/csv");
    response.setHeader("Content-Disposition", "attachment;filename=\"file"+System.currentTimeMillis()+".csv\"");
    writeCsv(csv, ',', response.getOutputStream());
    }

Wednesday, February 6, 2013

JSF Logged Interceptor


Logged JavaEE Interceptor for JSF logging

import java.io.Serializable;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;

/**
 *
 * @author happyFace
 */
@Logged
@Interceptor
public class LoggedInterceptor implements Serializable {

    public static final Logger LOGGER = Logger.getLogger(LoggedInterceptor.class.getName());
    public LoggedInterceptor() {
    }

    @AroundInvoke
    public Object logMethodEntry(InvocationContext invocationContext)
            throws Exception {
        LOGGER.log(Level.INFO, "Entering method: {0} in class {1} at Time {2}.",
                new Object[]{invocationContext.getMethod().getName(),
                    invocationContext.getMethod().getDeclaringClass().getName(),
                    new Date()});
        return invocationContext.proceed();
    }
//}  
}
---------------------------------------------------------------------------


import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.interceptor.InterceptorBinding;

/**
 *
 * @author happyFace
 */

@Inherited
@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Logged {
}


--------------------------------------------------------------------------------------
import java.security.Principal;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import javax.interceptor.Interceptors;

/**
 *
 * @author happyFace
 */
@Named
@ViewScoped
@Interceptors({ LoggedInterceptor.class})
public class Index {
    private String name = "Get A Lawyer";

    /**
     * @return the name
     */
    public String getName() {
        return name;
    }

    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    
    public String logout(){
        Principal userPrincipal = FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
        System.out.println("Principal: "+userPrincipal);
        return "login?faces-redirect=true";
    }
    
}