Some handy codes for backing bean for my record. I am following biemond's blogs for this - 
   1:  // print the roles of the current user  
   2:  for ( String role : ADFContext.getCurrent().getSecurityContext().getUserRoles() ) {  
   3:     System.out.println("role "+role);  
   4:  }  
   5:    
   6:    
   7:  // get the ADF security context and test if the user has the role users         
   8:  SecurityContext sec = ADFContext.getCurrent().getSecurityContext();  
   9:  if ( sec.isUserInRole("users") ) {  
  10:  }  
  11:  // is the user valid  
  12:  public boolean isAuthenticated() {  
  13:   return ADFContext.getCurrent().getSecurityContext().isAuthenticated();  
  14:  }  
  15:  // return the user  
  16:  public String getCurrentUser() {  
  17:   return ADFContext.getCurrent().getSecurityContext().getUserName();  
  18:  }  
  19:    
  20:    
  21:  // get the binding container  
  22:  BindingContainer bindings = BindingContext.getCurrent().getCurrentBindingsEntry();  
  23:    
  24:  // get an ADF attributevalue from AttributeBinding in ADF page definitions  
  25:  AttributeBinding attr = (AttributeBinding)bindings.getControlBinding("test");  
  26:  attr.setInputValue("test");  
  27:    
  28:  // get an Action or MethodAction by OperationBinding in PageDef 
  29:  OperationBinding method = bindings.getOperationBinding("methodAction");  
  30:  method.execute();  
  31:  List errors = method.getErrors();  
  32:  
  33:  method = bindings.getOperationBinding("methodAction");  
  34:  Map paramsMap = method.getParamsMap();  
  35:  paramsMap.put("param","value")  ;   //putting method param value & executing       
  36:  method.execute();  
  37:    
  38:    
  39:  // Get the data from an ADF tree binding for AF:Table or AF:Tree
  40:  DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();  
  41:    
  42:  FacesCtrlHierBinding treeData = (FacesCtrlHierBinding)dcBindings.getControlBinding("tree");  
  43:  Row[] rows = treeData.getAllRowsInRange();  
  44:    
  45:  // Get a attribute value of the current row of iterator  
  46:  DCIteratorBinding iterBind= (DCIteratorBinding)dcBindings.get("testIterator");  
  47:  String attribute = (String)iterBind.getCurrentRow().getAttribute("field1");  
  48:    
  49:  // Get the error  
  50:  String error = iterBind.getError().getMessage();  
  51:    
  52:    
  53:  // refresh the iterator  
  54:  dcBindings.refreshControl();  
  55:  iterBind.executeQuery();  
  56:  iterBind.refresh(DCIteratorBinding.RANGESIZE_UNLIMITED);  
  57:    
  58:  // Get all the rows of a iterator  
  59:  Row[] rows = iterBind.getAllRowsInRange();  
  60:  TestData dataRow = null;  
  61:  for (Row row : rows) {  
  62:    dataRow = (TestData)((DCDataRow)row).getDataProvider();  
  63:  }  
  64:    
  65:  // Get the current row of a iterator , a different way  
  66:  FacesContext ctx = FacesContext.getCurrentInstance();  
  67:  ExpressionFactory ef = ctx.getApplication().getExpressionFactory();  
  68:  ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{bindings.testIter.currentRow.dataProvider}", TestHead.class);  
  69:  TestHead test = (TestHead)ve.getValue(ctx.getELContext());  
  70:    
  71:  // Get a session bean  
  72:  FacesContext ctx = FacesContext.getCurrentInstance();  
  73:  ExpressionFactory ef = ctx.getApplication().getExpressionFactory();  
  74:  ValueExpression ve = ef.createValueExpression(ctx.getELContext(), "#{testSessionBean}", TestSession.class);  
  75:  TestSession test = (TestSession)ve.getValue(ctx.getELContext());  
  76:    
  77:  // main jsf page   
  78:  DCBindingContainer dc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();   
  79:  // taskflow binding   
  80:  DCTaskFlowBinding tf = (DCTaskFlowBinding)dc.findExecutableBinding("dynamicRegion1");  
  81:  // pagedef of a page fragment   
  82:  JUFormBinding form = (JUFormBinding) tf.findExecutableBinding("regions_employee_regionPageDef");  
  83:  // handle to  binding container of the region.  
  84:  DCBindingContainer dcRegion   = form;  
  85:    
  86:    
  87:    
  88:  // return a methodexpression like a control flow case action or ADF pagedef action  
  89:  private MethodExpression getMethodExpression(String name) {  
  90:   Class [] argtypes = new Class[1];  
  91:   argtypes[0] = ActionEvent.class;  
  92:   FacesContext facesCtx = FacesContext.getCurrentInstance();  
  93:   Application app = facesCtx.getApplication();  
  94:   ExpressionFactory elFactory = app.getExpressionFactory();  
  95:   ELContext elContext = facesCtx.getELContext();  
  96:   return elFactory.createMethodExpression(elContext,name,null,argtypes);  
  97:  }  
  98:    
  99:  //  
 100:  RichCommandMenuItem menuPage1 = new RichCommandMenuItem();  
 101:  menuPage1.setId("page1");  
 102:  menuPage1.setText("Page 1");  
 103:  menuPage1.setActionExpression(getMethodExpression("page1"));  
 104:    
 105:  RichCommandButton button = new RichCommandButton();  
 106:  button.setValueExpression("disabled",getValueExpression("#{!bindings."+item+".enabled}"));  
 107:  button.setId(item);  
 108:  button.setText(item);  
 109:  MethodExpression me = getMethodExpression("#{bindings."+item+".execute}");  
 110:  button.addActionListener(new MethodExpressionActionListener(me));  
 111:  footer.getChildren().add(button);  
 112:    
 113:    
 114:  // get a value  
 115:  private ValueExpression getValueExpression(String name) {  
 116:   FacesContext facesCtx = FacesContext.getCurrentInstance();  
 117:   Application app = facesCtx.getApplication();  
 118:   ExpressionFactory elFactory = app.getExpressionFactory();  
 119:   ELContext elContext = facesCtx.getELContext();  
 120:   return  elFactory.createValueExpression(elContext, name, Object.class);  
 121:  }  
 122:  // an example how to use this  
 123:  RichInputText input = new RichInputText();  
 124:  input.setValueExpression("value",getValueExpression("#{bindings."+item+".inputValue}"));  
 125:  input.setValueExpression("label",getValueExpression("#{bindings."+item+".hints.label}"));  
 126:  input.setId(item);  
 127:  panelForm.getChildren().add(input);  
 128:    
 129:    
 130:    
 131:  // catch an exception and show it in the jsf page  
 132:  catch(Exception e) {  
 133:   FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), "");  
 134:   FacesContext.getCurrentInstance().addMessage(null, msg);  
 135:  }  
 136:    
 137:                      
 138:  FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_WARN, msgHead , msgDetail);  
 139:  facesContext.addMessage(uiComponent.getClientId(facesContext), msg);                                                                     
 140:    
 141:    
 142:  // reset all the child uicomponents  
 143:  private void resetValueInputItems(AdfFacesContext adfFacesContext,  
 144:                                   UIComponent component){  
 145:     List<UIComponent> items = component.getChildren();  
 146:     for ( UIComponent item : items ) {  
 147:          
 148:         resetValueInputItems(adfFacesContext,item);  
 149:          
 150:         if ( item instanceof RichInputText  ) {  
 151:             RichInputText input = (RichInputText)item;  
 152:             if ( !input.isDisabled() ) {  
 153:                 input.resetValue() ;  
 154:                 adfFacesContext.addPartialTarget(input);  
 155:             };  
 156:         } else if ( item instanceof RichInputDate ) {  
 157:             RichInputDate input = (RichInputDate)item;  
 158:             if ( !input.isDisabled() ) {  
 159:                 input.resetValue() ;  
 160:                 adfFacesContext.addPartialTarget(input);  
 161:             };  
 162:         }  
 163:     }  
 164:  }  
 165:      
 166:  // redirect to a other url  
 167:  ExternalContext ectx = FacesContext.getCurrentInstance().getExternalContext();  
 168:  HttpServletResponse response = (HttpServletResponse)ectx.getResponse();  
 169:  String url = ectx.getRequestContextPath()+"/adfAuthentication?logout=true&end_url=/faces/start.jspx";  
 170:    
 171:  try {  
 172:    response.sendRedirect(url);  
 173:  } catch (Exception ex) {  
 174:    ex.printStackTrace();  
 175:  }  
 176:    
 177:  // PPR refresh a jsf component  
 178:  AdfFacesContext.getCurrentInstance().addPartialTarget(UIComponent);  
 179:    
 180:    
 181:  // find a jsf component      
 182:  private UIComponent getUIComponent(String name) {  
 183:   FacesContext facesCtx = FacesContext.getCurrentInstance();  
 184:   return facesCtx.getViewRoot().findComponent(name) ;  
 185:  }  
 186:    
 187:    
 188:  // get the adf bc application module  
 189:  private OEServiceImpl getAm(){  
 190:     FacesContext fc = FacesContext.getCurrentInstance();  
 191:     Application app = fc.getApplication();  
 192:     ExpressionFactory elFactory = app.getExpressionFactory();  
 193:     ELContext elContext = fc.getELContext();  
 194:     ValueExpression valueExp =  
 195:     elFactory.createValueExpression(elContext, "#{data.OEServiceDataControl.dataProvider}",  
 196:                                         Object.class);  
 197:     return   (OEServiceImpl)valueExp.getValue(elContext);  
 198:  }  
 199:    
 200:    
 201:  // change the locale  
 202:  Locale newLocale = new Locale(this.language);  
 203:  FacesContext context = FacesContext.getCurrentInstance();  
 204:  context.getViewRoot().setLocale(newLocale);  
 205:    
 206:    
 207:  // get the stacktrace of a not handled exception  
 208:  private ControllerContext cc = ControllerContext.getInstance();  
 209:    
 210:  public String getStacktrace() {  
 211:     if ( cc.getCurrentViewPort().getExceptionData()!=null ) {  
 212:         StringWriter sw = new StringWriter();  
 213:         PrintWriter pw = new PrintWriter(sw);  
 214:         cc.getCurrentViewPort().getExceptionData().printStackTrace(pw);  
 215:         return sw.toString();             
 216:     }  
 217:     return null;  
 218:  }  
 219:    
 220:    
 221:  // get the selected rows from a table component  
 222:  RowKeySet selection = resultTable.getSelectedRowKeys();  
 223:  Object[] keys = selection.toArray();  
 224:  List<Long> receivers = new ArrayList<Long>(keys.length);  
 225:  for ( Object key : keys ) {  
 226:    User user = modelFriends.get((Integer)key);  
 227:  }  
 228:    
 229:  // get  selected Rows of a table 2  
 230:  for (Object facesRowKey : table.getSelectedRowKeys()) {  
 231:   table.setRowKey(facesRowKey);  
 232:   Object o = table.getRowData();  
 233:   JUCtrlHierNodeBinding rowData = (JUCtrlHierNodeBinding)o;  
 234:   Row row = rowData.getRow();  
 235:   Test testRow = (Test)((DCDataRow)row).getDataProvider() ;  
 236:  }  
 
 
The 2nd Part of 2011 follows from here - Starting with FacesContext class, with this class you can use to find a JSF Component, change the Locale, get the ELContext, Add a message to your view and get the ExternalContext. 
The ExternalContext class, with this you can retrieve all the java init & context (web.xml) parameters, the Request & Session parameters and your web application url. 
AdfFacesContext class, you can use this class for Partial Page Rendering ( PPR), get the PageFlowScope and ViewScope variables 
ADFContext class, with this you can get all the memory scopes variables even the application scope variables, ELContext and the SecurityContext. 
SecurityContext class, retrieve the current user and its roles. 
BindingContext, BindingContainer and DCBindingContainer class. These classes are well known when you want to retrieve the ADF pagedef objects. 
The last class is ControllerContext, which you can use to retrieve the exceptions