Archivi tag: persistence

Inserire metodi custom nel service di Liferay

Visto che per l’ennesima volta stavo perdendo la testa su come e dove creare i metodi custom per l’accesso al db, ho fatto questo piccolo documento che può servire per non perdere tempo ogni volta.

******************************************
Si vuole implementare un metodo custom del tipo “ReturnType newMethodName(InputType arg)” per l’entità Xyz

fase 1) nella classe src/a.b.c.servicebuilder.service.persistence.XyzFinderImpl inserire il nuovo methodo con tutto il codice necessario

public ReturnType newMethodName(InputType arg) throws SystemException {

}

Lanciando ora il “build-service” verranno modificate le classi/interface

1.a) service/a.b.c.servicebuilder.service.persistence.XyzFinder (interface) con la definizione

public ReturnType newMethodName(InputType arg) throws SystemException;

1.b) service/a.b.c.servicebuilder.service.persistence.XyzFinderUtil (class) con il metodo

public static ReturnType newMethodName(InputType arg) throws com.liferay.portal.SystemException {
return getFinder().newMethodName(arg);
}

Pertanto sarà possibile richiamare il metodo come XyzFinderUtil.newMethodName(value);

Se si vuole rendere disponibile il nuovo metodo anche dalla XyzLocalServiceUtil (cosa consigliabile):

fase 2) nella classe src/a.b.c.servicebuilder.service.impl.XyzLocalServiceImpl inserire il codice del metodo

public ReturnType newMethodName(InputType arg) throws SystemException {
return xyzFinder.newMethodName(arg);
}

Lanciando nuovamente il “build-service” verranno modificate le classi

2.a) service/a.b.c.servicebuilder.service.XyzLocalService
2.b) service/a.b.c.servicebuilder.service.XyzLocalServiceClp
2.c) service/a.b.c.servicebuilder.service.XyzLocalServiceUtil

Pertanto sarà possibile richiamare il metodo come XyzLocalServiceUtil.newMethodName(value);

——————————————————-

Per poter lanciare il “build-service” solo una volta (e non due come nel caso precedente) si deve “anticipare” la creazione della definizione nell’interfaccia service/a.b.c.servicebuilder.service.persistence.XyzFinder:

fase 1) nella classe src/a.b.c.servicebuilder.service.persistence.XyzFinderImpl inserire il nuovo methodo

public ReturnType newMethodName(InputType arg) throws SystemException {

}

fase 2) inserire direttamente nell’interface service/a.b.c.servicebuilder.service.persistence.XyzFinder la definizione

public ReturnType newMethodName(InputType arg) throws SystemException;

fase 3) nella classe src/a.b.c.servicebuilder.service.impl.XyzLocalServiceImpl inserire il codice del metodo

public ReturnType newMethodName(InputType arg) throws SystemException {
return xyzFinder.newMethodName(arg);
}

Lanciando ora il “build-service” verranno modificate le classi/interface

3.a) service/a.b.c.servicebuilder.service.persistence.XyzFinderUtil
3.b) service/a.b.c.servicebuilder.service.XyzLocalService
3.c) service/a.b.c.servicebuilder.service.XyzLocalServiceClp
3.d) service/a.b.c.servicebuilder.service.XyzLocalServiceUtil

Pertanto sarà possibile richiamare il metodo come XyzLocalServiceUtil.newMethodName(value);