Running java code as a different user.

We run into quite some issues with security – this is due to our solution. Our task based security solution needs to update files/folder (noderefs) from user X while the system (the workflow task) is currently assigned to user Y.

This construction helped us somewhat;

String test = AuthenticationUtil.runAs(new RunAsWork<String>() {
                public String doWork() throws Exception {

                          …. do some stuff ….

                 } // end public doWork
            }, AuthenticationUtil.getSystemUserName());

 

But now I also found this blog – this also helps me with current sys user settings.

http://stackoverflow.com/questions/10225254/how-to-check-out-a-document-to-a-different-user-via-java-code-in-alfresco

 

Date Calendar GregorianCalendar

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

 

If I extract a date from a node in Alfresco, I cannot cast directly to Calendar or GregorianCalendar. So I cast the Serializable return type from Alfresco to the Date class.
Date d = (java.util.Date) nodeService.getProperty(nr, INCENTROmodel.STARTDATE);

 

But java.util.Date is depricated since Java 1.1
The date.getTime() function still works.
It return the amount of ms since the beginning of time (aka 1 jan 1970)
long gt = d.getTime();

 

And the GregorianCalendar knows this. So
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(gt);

Post no. 3_million_and_1 about the java.util.Date / java.util.Calendar / java.util.GregorianCalendar