Hello thank you for assistance.
Yes I obviously imported model class MembershipFee.
I tried to create a service, but I obtain same error.
Then observing error detail I supposed problem was in Metadata and I debugged this code I added to editor:
/* Session session = metadata.getSession()
MetaClass metaClass1 = session.getClassNN(“contacts$MembershipFee”)*/
Same result…
To avoid Mispelled names I copied from Studio…
Last thing I can imagine is there is some not visible charachter in some of code (I can try linux/unic od to investigate) or the clas name is not in some restriction not known to me.
------- Complete Error Message Using DataManager in code, not custom service -------------------
java.lang.IllegalArgumentException: MetaClass not found for contactsclass
at com.haulmont.cuba.core.sys.CachingMetadataSession.getClassNN(CachingMetadataSession.java:70)
at com.haulmont.cuba.core.sys.MetadataImpl.getClassNN(MetadataImpl.java:319)
at com.haulmont.cuba.core.sys.PersistenceSecurityImpl.applyConstraints(PersistenceSecurityImpl.java:75)
at sun.reflect.GeneratedMethodAccessor164.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84)
at com.haulmont.cuba.core.sys.PerformanceLogInterceptor.aroundInvoke(PerformanceLogInterceptor.java:29)
at sun.reflect.GeneratedMethodAccessor163.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy55.applyConstraints(Unknown Source)
at com.haulmont.cuba.core.app.DataServiceQueryBuilder.applyConstraints(DataServiceQueryBuilder.java:187)
at com.haulmont.cuba.core.app.DataServiceQueryBuilder.getQuery(DataServiceQueryBuilder.java:127)
at com.haulmont.cuba.core.app.RdbmsStore.createQuery(RdbmsStore.java:633)
at com.haulmont.cuba.core.app.RdbmsStore.loadList(RdbmsStore.java:224)
at com.haulmont.cuba.core.app.DataManagerBean.loadList(DataManagerBean.java:74)
at com.haulmont.cuba.core.app.DataServiceBean.loadList(DataServiceBean.java:54)
at sun.reflect.GeneratedMethodAccessor166.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:84)
at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:117)
at sun.reflect.GeneratedMethodAccessor121.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy85.loadList(Unknown Source)
at sun.reflect.GeneratedMethodAccessor165.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.haulmont.cuba.core.sys.remoting.LocalServiceInvokerImpl.invoke(LocalServiceInvokerImpl.java:94)
at com.haulmont.cuba.web.sys.remoting.LocalServiceProxy$LocalServiceInvocationHandler.invoke(LocalServiceProxy.java:154)
at com.sun.proxy.$Proxy257.loadList(Unknown Source)
at com.haulmont.cuba.client.sys.DataManagerClientImpl.loadList(DataManagerClientImpl.java:57)
at com.haulmont.cuba.core.global.DataManager$loadList.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
at pro.sysonline.contacts.web.membershipfee.MembershipFeeEdit.loadMembershipFees(MembershipFeeEdit.groovy:75)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169)
at pro.sysonline.contacts.web.membershipfee.MembershipFeeEdit.postValidate(MembershipFeeEdit.groovy:50)
at com.haulmont.cuba.gui.components.WindowDelegate.postValidate(WindowDelegate.java:208)
at com.haulmont.cuba.web.gui.WebWindow.handleValidationErrors(WebWindow.java:435)
at com.haulmont.cuba.web.gui.WebWindow.validateAll(WebWindow.java:428)
at com.haulmont.cuba.gui.components.AbstractWindow.validateAll(AbstractWindow.java:217)
at com.haulmont.cuba.web.gui.WebWindow$Editor.commitAndClose(WebWindow.java:1770)
at com.haulmont.cuba.gui.components.AbstractEditor.commitAndClose(AbstractEditor.java:111)
at com.haulmont.cuba.gui.components.EditorWindowDelegate.lambda$wrapBy$1(EditorWindowDelegate.java:94)
at com.haulmont.cuba.gui.components.actions.BaseAction.actionPerform(BaseAction.java:228)
at com.haulmont.cuba.web.gui.components.WebButton.performAction(WebButton.java:46)
at com.haulmont.cuba.web.gui.components.WebButton.lambda$new$61446b05$1(WebButton.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037)
at com.vaadin.ui.Button.fireClick(Button.java:377)
at com.haulmont.cuba.web.toolkit.ui.CubaButton.fireClick(CubaButton.java:69)
at com.vaadin.ui.Button$1.click(Button.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:119)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:444)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:409)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:90)
at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1435)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:361)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:312)
at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:203)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
------- Complete Error Message Using DataManager in code, not custom service -------------------
------- Full Editor Controller source--------------------------------------------------
package pro.sysonline.contacts.web.membershipfee
import com.haulmont.cuba.core.global.DataManager
import com.haulmont.cuba.core.global.LoadContext
import com.haulmont.cuba.core.global.Messages
import com.haulmont.cuba.gui.components.AbstractEditor
import com.haulmont.cuba.gui.components.ValidationErrors
import com.sun.xml.internal.ws.api.model.MEP
import pro.sysonline.contacts.entity.ArtistInfo
import pro.sysonline.contacts.entity.MembershipFee
import pro.sysonline.contacts.entity.MembershipFeeType
import javax.inject.Inject
class MembershipFeeEdit extends AbstractEditor {
private ArtistInfo a
@Inject
private DataManager dataManager
@Inject
private Messages messages
/* @Inject
private MembershipFeeService memberShipService
@Inject
protected Metadata metadata
*/
@Override
void init(Map<String, Object> params) {
super.init(params)
a = (ArtistInfo) params.get("artist")
}
// Initialize Editor for new MembershipFee Item
@Override
protected void initNewItem(MembershipFee item) {
item.artistInfo = a
}
@Override
void postValidate(ValidationErrors errors) {
Integer MAX_YEARLY_FEE = 5
MembershipFee it
List<MembershipFee> l = new ArrayList<MembershipFee>()
l = loadMembershipFees(a)
if ((l != null) && (!l.isEmpty())) {
// First Year already present
if (item.type.equals(MembershipFeeType.FIRST_YEAR))
if (l.any() { it.type == MembershipFeeType.FIRST_YEAR })
errors.add(messages.getMessage(getClass(), "errorFY"))
// All Fees presents
if (l.count() { it.type == MembershipFeeType.NEXT_YEAR } == MAX_YEARLY_FEE)
errors.add(messages.getMessage(getClass(), "errorMAX_YF"))
}
}
private List<MembershipFee> loadMembershipFees(ArtistInfo a) {
/* Session session = metadata.getSession()
MetaClass metaClass1 = session.getClassNN("contacts$MembershipFee")*/
LoadContext<MembershipFee> loadContext = LoadContext.create(MembershipFee.class)
.setQuery(LoadContext.createQuery("select f from contacts$MembershipFee f where f.artistInfo.id = :artistId")
.setParameter("artistId", a.id))
.setView("membershipFee-basic")
//return dataManager.loadList(loadContext) DATAMANAGER
//return memberShipService.getMemberShipFeesForArtist(a) SERVICE
// Temporary Workaround
return null
}
}
------- Service source--------------------------------------------------
package pro.sysonline.contacts.service
import com.haulmont.cuba.core.EntityManager
import com.haulmont.cuba.core.Persistence
import com.haulmont.cuba.core.Transaction
import org.slf4j.Logger
import org.springframework.stereotype.Service
import pro.sysonline.contacts.entity.ArtistInfo
import pro.sysonline.contacts.entity.MembershipFee
import javax.inject.Inject
@Service(MembershipFeeService.NAME)
public class MembershipFeeServiceBean implements MembershipFeeService {
@Inject
Logger log
@Inject
private Persistence persistence
@Override
List<MembershipFee> getMemberShipFeesForArtist(ArtistInfo a) {
EntityManager em = null
Transaction tx = null
com.haulmont.cuba.core.Query query = null
List<MembershipFee> l
String queryStr = "select f from contacts$MembershipFee f where f.artistInfo = :artistId"
try {
tx = persistence.createTransaction()
em = persistence.getEntityManager()
query = em.createQuery(queryStr)
query.setParameter("artistId",a.id)
q
l = (List) query.getResultList()
tx.commit()
} catch (Exception ex) {
log.debug(Class.getName())
} finally {
tx.end()
}
return ((null != l) ? l : new ArrayList<MembershipFee>())
}
}