Subversion Repositories Integrator Subversion

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 espaco 1
package br.gov.al.saude.srv.web;
2
 
3
import java.text.MessageFormat;
4
import java.util.*;
5
import javax.naming.*;
6
import javax.naming.spi.ObjectFactory;
7
 
8
public class PropertiesFactory implements ObjectFactory{
9
 
10
    public PropertiesFactory(){
11
    }
12
 
13
    @SuppressWarnings("rawtypes")
14
        public Object getObjectInstance(Object objetoReferencia, Name name, Context nameCtx, Hashtable environment) throws Exception {
15
        if(estaNulo(objetoReferencia))
16
            return new Properties();
17
        if(isInstanciaSuportada(objetoReferencia))
18
            return criarPropertiesAtravesDeEnumeracaoDeRefAddr((Reference)objetoReferencia);
19
        else
20
            throw new IllegalArgumentException(MessageFormat.format(PATTERN_MENSAGEM_TIPO_NAO_SUPORTADO, new Object[] {
21
                objetoReferencia.getClass().getName(), String.valueOf(name)
22
            }));
23
    }
24
 
25
    private boolean isInstanciaSuportada(Object objetoReferencia){
26
        return objetoReferencia instanceof Reference;
27
    }
28
 
29
    private boolean estaNulo(Object obj){
30
        return obj == null;
31
    }
32
 
33
    @SuppressWarnings("rawtypes")
34
        private Properties criarPropertiesAtravesDeEnumeracaoDeRefAddr(Reference ref){
35
        Properties props = new Properties();
36
        RefAddr element;
37
        for(Enumeration all = ref.getAll(); all.hasMoreElements(); props.setProperty(element.getType(), String.valueOf(element.getContent())))
38
            element = (RefAddr)all.nextElement();
39
 
40
        return props;
41
    }
42
 
43
    private static final String PATTERN_MENSAGEM_TIPO_NAO_SUPORTADO = "O tipo {0} não suportado por este factory, era esperado um javax.naming.Reference para construir o properties para o resource: {1}.";
44
}