[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xmlbeans-dev
Subject:    [jira] Created: (XMLBEANS-205) using configuration file with extention interfaces restricted names o
From:       "Denis Anisimov (JIRA)" <xmlbeans-dev () xml ! apache ! org>
Date:       2005-09-26 13:01:50
Message-ID: 1872682953.1127739710079.JavaMail.jira () ajax ! apache ! org
[Download RAW message or body]

using configuration file with extention interfaces restricted names of methods in \
                interfaces
--------------------------------------------------------------------------------------------


         Key: XMLBEANS-205
         URL: http://issues.apache.org/jira/browse/XMLBEANS-205
     Project: XMLBeans
        Type: Bug
  Components: Compiler  
    Versions: Version 2    
 Environment: Does not related to platform
    Reporter: Denis Anisimov


Use .xsdconfig file.
Create two different interfaces with common method name. F.e. 
interface First {
void get();
}

interface Second {
void get();
}

Create two instructions in .xsdconfig for various bean neames from schema file for \
extending these interfaces with different handlers. F.e.

<xb:extension for="test.First">
        <xb:interface name="schema.OneEntity">
            <xb:staticHandler>handlers.FirstHandler<xb:staticHandler>
        </xb:interface>
    </xb:extension>


<xb:extension for="test.Second">
        <xb:interface name="schema.AnotherEntity">
            <xb:staticHandler>handlers.SecondHandler<xb:staticHandler>
        </xb:interface>
    </xb:extension>

You will get error about method names collisions.
Compiler will tell to you that you have collide methods in SecondHandler and \
FirstHandler.

This is consequence of calling method void secondPhaseValidation() in \
BindingConfigImpl.java And this is consequence wrong comparing algorithm for \
MethodSignatureImpl class.

Original equals()  and hashCode() methods don't perform comparing Handler names. So \
they use just method names and signature.

I suggest that those methods should be :

        private boolean interfacesEqual(MethodSignature signature){
            if ( getInterfaceName()==null ){
            	if (((MethodSignatureImpl)signature).getInterfaceName()!= null ){
            		return false;
            	}
            }
            else if ( \
!getInterfaceName().equals(((MethodSignatureImpl)signature).getInterfaceName())){  \
return false;  }
            return true;
        }
        
        private boolean lightEqual(MethodSignature signature){
            if (!signature.getName().equals(getName()) )
                return false;

            String[] params = getParameterTypes();
            String[] msParams = signature.getParameterTypes();

            if (msParams.length != params.length )
                return false;

            for (int i = 0; i < params.length; i++)
            {
                if (!msParams[i].equals(params[i]))
                    return false;
            }

            return true;
        }

        public boolean equals(Object o)
        {
            if ( !(o instanceof MethodSignature))
                return false;

            MethodSignature ms = (MethodSignature)o;
                 
            if ( !interfacesEqual(ms ) ){
            	return false;
            }
            return lightEqual( ms );

        }

        public int hashCode()
        {
            if (_hashCode!=NOTINITIALIZED)
                return _hashCode;

            int hash = getName().hashCode();
            
            if (getInterfaceName() != null) {
				hash *= 19;

				hash += getInterfaceName().hashCode();
			}

            String[] params = getParameterTypes();

            for (int i = 0; i < params.length; i++)
            {
                hash *= 19;
                hash += params[i].hashCode();
            }

            _hashCode = hash;
            return _hashCode;
        }




-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: dev-help@xmlbeans.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic