jueves, 7 de marzo de 2013

Api Reflection en Java. Ejemplo de uso

El otro día necesité usar reflection en java. Es el típico api que no uso muy a menudo, por lo que siempre tiro de documentación. Personalmente suelo recurrir al documento Introducción al API Reflection (Reflexión) de Java por Eneko González Benito (Keko) , alojado en JavaHispano. Antes tiraba de google, pero este documento está bastante bien para ser una introducción.

Aún así, pongo aquí un ejemplo rápido de uso, el cual es bastante intuitivo.


Código

Clase que vamos a usar de ejemplo.

class Persona{
  private String nombre;
  private String apellido;
  
  public String getNombre() {
   return nombre;
  }
  public void setNombre(String nombre) {
   this.nombre = nombre;
  }
  public String getApellido() {
   return apellido;
  }
  public void setApellido(String apellido) {
   this.apellido = apellido;
  }
  @Override
  public String toString() {
   return "Persona [nombre=" + nombre + ", apellido=" + apellido + "]";
  }
}

Clase que va a instanciar a la anterior usando el API Reflection. Responde a la pregunta... ¿Cómo coño se hacía...? :D

public class ReflectionTest {
 
 public static void main(String[] args) {
  try {
   Class p = Class.forName("Persona");
   
   try {
    Persona pp = (Persona) p.newInstance();
    
    pp.setNombre("Carlos");
    pp.setApellido("G. González");
    
    System.out.println(pp.toString());
    
   } catch (InstantiationException e) {
    e.printStackTrace();
   } catch (IllegalAccessException e) {
    e.printStackTrace();
   }
   
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
}

Y el resultado:

Persona [nombre=Carlos, apellido=G. González]

Documentación relacionada

martes, 5 de marzo de 2013

Pasar en Solr de query en string a query en CmsSolrQuery


String solrQuery = "fq=type:MyType&sort=MyOtherField asc&rows=15";

Map < String, String[] > pm = CmsRequestUtil.createParameterMap(solrQuery);

CmsSolrQuery cmsSolrQuery = new CmsSolrQuery(getCmsObject(),pm);

String SOLR_INDICE_ONLINE = "Solr Online";
CmsSearchManager manager = OpenCms.getSearchManager();
CmsSolrIndex index = manager.getIndexSolr(SOLR_INDICE_ONLINE);
index.setRequireViewPermission(false);


CmsSolrResultList results = index.search(adminCmsObject, cmsSolrQuery,true);
 for (CmsSearchResource item: results){
  // TODO tratamiento
 }
    
   

viernes, 22 de febrero de 2013

Enviando emails con Java 6 y tomcat 7. DCH for MIME type multipart/mixed

Si la aplicación no puede enviar emails, mostrando un error tal como

Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type multipart/mixed; 
 boundary="----=_Part_4_26855300.1361447126169"
 at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:877)
 at javax.activation.DataHandler.writeTo(DataHandler.java:302)
 at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403)
 at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1745)
 at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:636)
 ... 50 more

La solución es copiar las librerías activation-1.1.1.jar y mail-1.4.1.jar a la carpeta lib de tomcat. Unos post de stackoverflow me ayudaron a dar con la solución, pero dando pistas sobre el error, sin dar solución concreta.

Related Posts Plugin for WordPress, Blogger...