The change was made for River-336.

Can we refactor the Proxy's to use reflection, first discover if the the method exists, if not revert to RMIClassLoader.getClassAnnotation?

This affects proxy's for Reggie, Outrigger and Norm.

Regards,

Peter.


On 11/09/2015 10:36 AM, Dennis Reedy wrote:
Hi Perter,

I don’t know if this one is fixable. There are changes to 
net.jini.loader.ClassLoading, that force incompatibility with it’s predecessor. 
I get this for starters:

java.lang.NoSuchMethodError: 
net.jini.loader.ClassLoading.getClassAnnotation(Ljava/lang/Class;)Ljava/lang/String;
        at 
org.apache.river.reggie.EntryClassBase.setCodebase(EntryClassBase.java:54)
        at 
org.apache.river.reggie.ClassMapper.toEntryClassBase(ClassMapper.java:156)
        at 
org.apache.river.reggie.ClassMapper.toEntryClassBase(ClassMapper.java:117)
        at org.apache.river.reggie.EntryClass.toClass(EntryClass.java:180)
        at org.apache.river.reggie.EntryRep.get(EntryRep.java:98)
        at org.apache.river.reggie.EntryRep.toEntry(EntryRep.java:202)
        at org.apache.river.reggie.Item.get(Item.java:160)
        at org.apache.river.reggie.Item.toServiceItem(Item.java:185)
        at org.apache.river.reggie.Matches.get(Matches.java:63)
        at 
org.apache.river.reggie.RegistrarProxy.lookup(RegistrarProxy.java:128)
        at net.jini.core.lookup.ServiceRegistrar$lookup.call(Unknown Source)

Dennis

On Sep 10, 2015, at 636PM, Peter<j...@zeus.net.au>  wrote:

Thanks Dennis,

Well spotted.

This class shouldn't be in platform.jar, it should be in jsk-lib.jar and 
jsk-dl.jar

It's used by org.apache.river.impl.lease.AbstractLeaseMap, which is a 
replacement for org.apache.river.lease.AbstractLeaseMap.

It's also used by FiddlerLease, LandlordLease and RegistrarLease.

FiddlerLeaseMap, LandlordLeaseMap and RegistrarLeaseMap all extend the 
replacement AbstractLeaseMap.

This is the javadoc from the new AbstractLeaseMap:

/**
* AbstractLeaseMap is intended to work around some minor design warts in the
* {@link Lease} interface:
*
* In the real world, when a Lease is renewed, a new Lease contract document
* is issued, however when an electronic Lease is renewed the Lease expiry
* date is changed and the record of the previous Lease is lost.  Ideally the
* renew method would return a new Lease.
*
* Current Lease implementations rely on a {@link Uuid} to represents the lease,
* the expiry date is not included the equals or hashCode calculations.  For this
* reason, two Lease objects, one expired and one valid, may be equal, this
* is undesirable.
*
* The Lease interface doesn't specify a contract for equals or hashCode,
* all Lease implementations are also mutable, previous implementations
* of {@link LeaseMap} used Leases as keys.
*
* AbstractLeaseMap uses only the {@link ID}, usually a {@link Uuid}
* provided by a Lease for internal map keys, if {@link ID} is not implemented
* then the Lease itself is used as the key.
*
* Both Lease keys and Long values are actually stored internally as values
* referred to by ID keys, allowing Lease implementations to either not override
* hashCode and equals object methods or allow implementations that more
* accurately model reality.
*
* This implementation is thread safe, concurrent and doesn't require external
* synchronization.

Regards,

Peter.


On 11/09/2015 2:55 AM, Dennis Reedy wrote:
I’m not sure this is about release notes. You seem quite keen on getting 3.0 
out the door, while I applaud the urgency, lets not dump the baby out with the 
bath water. The net.jini namespace has not been changed, the implementation of 
those interfaces has.

I should be able to discover a ServiceRegistrar started from 3.0 from a 2.x 
client. The classes required should be dynamically downloaded with the proxy. 
The change here that has been aded to jsk-platform has resulted in classes 
(org.apache.river.api.util.ID for starters), not being available. I’m not so 
sure this is good. It’s certainly not a good thing for projects that may want 
to use existing tools for discovery.

Regards

Dennis

On Sep 10, 2015, at 1242PM, Bryan Thompson<br...@systap.com>   wrote:

I guess the question is whether River 2.x is a breaking change in terms of
cross service communications with River 3.x.  As this is a major release, I
see it an opportunity to make breaking changes if we need to make them.
But there is no reason to break interoperability by accident.

So, are there good reasons why River 2.x will not be able to talk to River
3.x?  If so, can we capture them here and then summarize them in release
notes?  Is there a specific location in which the release notes are being
developed (SVN file, wiki page, etc.)?

Thanks,
Bryan

----
Bryan Thompson
Chief Scientist&   Founder
SYSTAP, LLC
4501 Tower Road
Greensboro, NC 27410
br...@systap.com
http://blazegraph.com
http://blog.bigdata.com<http://bigdata.com>
http://mapgraph.io

Blazegraph™<http://www.blazegraph.com/>   is our ultra high-performance
graph database that supports both RDF/SPARQL and Tinkerpop/Blueprints
APIs.  Blazegraph is now available with GPU acceleration using our disruptive
technology to accelerate data-parallel graph analytics and graph query.

CONFIDENTIALITY NOTICE:  This email and its contents and attachments are
for the sole use of the intended recipient(s) and are confidential or
proprietary to SYSTAP. Any unauthorized review, use, disclosure,
dissemination or copying of this email or its contents or attachments is
prohibited. If you have received this communication in error, please notify
the sender by reply email and permanently delete all copies of the email
and its contents and attachments.

On Thu, Sep 10, 2015 at 12:37 PM, Dennis Reedy<dennis.re...@gmail.com>
wrote:

Hi,

I’m building and running an example that I based off of Greg’s example
from the qa-refactor-namespace branch. I had a browser utility that I use
at times running that is based on 2.2.2. I could not discover reggie with
the browser utility because of

Caused by: java.lang.ClassNotFoundException: org.apache.river.api.util.ID
        at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:360)

The org.apache.river.api.util.ID class is an interface:

/**
* A mix in interface that provides an identity to be used as a key in
Collections.
*
* @param<T>   Object identity.
* @author peter
*/
public interface ID<T>   {

    /**
     * @return object representing identity, usually a Uuid.
     */
    public T identity();
}

Seems to be used by the following classes:

./src/org/apache/river/fiddler/FiddlerLease.java:import
org.apache.river.api.util.ID;
./src/org/apache/river/impl/lease/AbstractLeaseMap.java:import
org.apache.river.api.util.ID;
./src/org/apache/river/landlord/LandlordLease.java:import
org.apache.river.api.util.ID;
./src/org/apache/river/lease/AbstractLease.java:import
org.apache.river.api.util.ID;
./src/org/apache/river/reggie/RegistrarLease.java:import
org.apache.river.api.util.ID;

Perhaps org.apache.river.api.util.ID should be in jsk-dl.jar instead?

As a user I might expect that I should be able to use Apache River 3.0
services from 2.x (perhaps not the other way around). What do others think?

Regards

Dennis


Reply via email to