ValueChangeListener Select component works bad

Hi to everyone,
I have a problem with valuechangelistener. I have this code:


private void caricaSelectMainUser(){
		Object[] a 							 = socFilName.get(0);
		List<String> elencosoc 		 		 = societaDao.getSocieta();
		List<String> socUtente		 		 = app.getUserDao().getSocietaByUname(app.getCod_utente());	
		
		for(int i=0;i<elencosoc.size();i++){			
			societa.addItem(elencosoc.get(i));
		}			
		caricaMenuFiliale();
		caricaMenuRisorsa();
		societa.select(socUtente.get(0));	
		filiale.select(a[1]
);
		nome.select(a[2]
);
		
		societa.addListener(new Property.ValueChangeListener() {
		
			@Override
			public void valueChange(ValueChangeEvent event) {
				filiale.removeAllItems();
				caricaMenuFiliale();
				nome.removeAllItems();
			}	
		});	
		
		filiale.addListener(new Property.ValueChangeListener() {
		
			@Override
			public void valueChange(ValueChangeEvent event) {
				System.out.println("entro nel listener filiale");
				nome.removeAllItems();
				caricaMenuRisorsa();
			}	
		});		
		
		nome.addListener(new ValueChangeListener() {
		
			@Override
			public void valueChange(ValueChangeEvent event) {
				getValuesFromDropDown();
			}	
		});		
		
		getValuesFromDropDown();

This part of code manage the listeners for “società”,“filiale” and “name”.


private void caricaMenuFiliale(){
		List<Object[]> elencofilNew	 = app.getUserDao().getDescFilialeSoc(societa.getValue().toString());
		mapFiliale = new HashMap<String,Object>();
		for(int i=0;i<elencofilNew.size();i++){
			Object[] a = elencofilNew.get(i);
			for(int j=0;j<a.length;j++){
				mapFiliale.put(a[1]
.toString(), a[0]
);
				filiale.addItem(a[1]
);
			}
		}
	}
	
	private void caricaMenuRisorsa(){
		List<Object[]> elencoNominativiNew	 = app.getUserDao().getNominativiFromSoc(societa.getValue().toString());
		map = new HashMap<String,Object>();
		for(int i=0;i<elencoNominativiNew.size();i++){
			Object[] a = elencoNominativiNew.get(i);
			map.put((String) a[0]
,a[1]
);						
			nome.addItem((String) a[0]
.toString());
			
		}
	}

	private void getValuesFromDropDown(){
		String codsoc = societa.getValue().toString();
		String codfil = mapFiliale.get(filiale.getValue().toString()).toString();
		String codper = map.get(nome.getValue()).toString();
		String mm	  = (mese.getValue().toString().length()==1?("0"+mese.getValue().toString()):(mese.getValue().toString()));
		String aaaamm = anno.getValue().toString() + mm;
         }

the sequence flow should be that when “societa” change, select “filiale” is load with data bind with the selected “society” and when “filiale” change “name” is load with data bind with “society” and “filiale” selected. But when I select a new “society”, the code below start


nome.addListener(new ValueChangeListener() {
		
			@Override
			public void valueChange(ValueChangeEvent event) {
				getValuesFromDropDown();
			}	
		});	

and I catch the NullPointer Exception on


String codfil = mapFiliale.get(filiale.getValue().toString()).toString();

in getValuesFromDropDown() method. If I cancel this method call from valueChangeListener from select “nome” all works fine. I know that my logic could have some problems, but I don’t know why this behavior. Could anyone help me?

Thank you.