db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig Russell (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-507) Completeness test for persistent interface fails with annotations
Date Tue, 10 Jul 2007 00:56:04 GMT

    [ https://issues.apache.org/jira/browse/JDO-507?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12511304
] 

Craig Russell commented on JDO-507:
-----------------------------------

Here's a sample of the code needed to reflectively invoke methods:

    protected void setAddrid(Object obj, long addrid) {
        set (obj, addrid, "setAddrid");
    }

    protected void set(Object obj, long value, String methodName) {
        Method method = getMethod(obj, methodName, long.class);
        invokeMethod(method, obj, value);
    }

    protected Map<Class, Map<String, Method>> classMethodMap = 
            new HashMap<Class, Map<String, Method>>();

    protected Method getMethod(Object obj, String methodName, 
            Class parameterClass) {
        Class clazz = obj.getClass();
        Map<String, Method> methodMap = classMethodMap.get(clazz);
        if (methodMap == null) {
            methodMap = new HashMap<String, Method>();
            classMethodMap.put(clazz, methodMap);
        }
        Method result = methodMap.get(methodName);
        if (result == null) {
            try {
                result = clazz.getMethod(methodName, parameterClass);
                methodMap.put(methodName, result);
            } catch (NoSuchMethodException ex) {
                throw new RuntimeException("Unable to find method " +
                        methodName + "in class " + clazz.getName(), ex);
            }
        }
        return result;
    }

    private void invokeMethod(Method method, Object obj, Object value) {
        try {
            method.invoke(obj, value);
        } catch (IllegalArgumentException ex) {
            throw ex;
        } catch (IllegalAccessException ex) {
            throw new RuntimeException("Illegal Access", ex);
        } catch (InvocationTargetException ex) {
            throw new RuntimeException("Invocation Target", ex);
        }
    }


>  Completeness test for persistent interface fails with annotations
> ------------------------------------------------------------------
>
>                 Key: JDO-507
>                 URL: https://issues.apache.org/jira/browse/JDO-507
>             Project: JDO
>          Issue Type: Task
>          Components: tck2
>    Affects Versions: JDO 2 maintenance release 1
>            Reporter: Michelle Caisse
>         Attachments: jdo-507.patch
>
>
> Annotations on persistent interfaces have not yet been implemented by jpox. I have added
the test to configurations.list, so it gets run on any complete test run, but I have not yet
added the classes to the list of jdo metadata files in project.properties because that causes
enhancement to fail. Therefore, the test currently gives the following error: 
>     [java] Class org.apache.jdo.tck.pc.companyAnnotatedDS.PICompany has field org.apache.jdo.tck.pc.companyAnnotatedDS.PICompany.address
declared in MetaData, but this field doesnt exist in the class!
>     [java] org.jpox.metadata.InvalidMetaDataException: Class org.apache.jdo.tck.pc.companyAnnotatedDS.PICompany
has field org.apache.jdo.tck.pc.companyAnnotatedDS.PICompany.address declared in MetaData,
but this field doesnt exist in the cl
> ass!
> ...
> When the feature is implemented, project.properties must be edited to include PI*.class
in the list for enhancement.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message