Well, it was intended for provisioning codebases, al a maven.

There are security issues passing a ClassLoader reference.

However I think Gregg Wonderly came up with a better idea with his 
CodebaseAccessClassloader that replaces RMIClassLoaderSPI

So my current thoughts are the class should probably have a single method, 
unmarshall that returns ServiceItem. 

As you can tell I haven't quite got it figured out, so I'd be grateful for a 
little help.

Cheers,

Peter.
----- Original message -----
> Can you explain a bit more behind the logic for passing in CodeSource[]?
>
> On 30 January 2011 20:23, Peter Firmstone <j...@zeus.net.au> wrote:
>
> > Gut feel, tells me the following class is not right, it's intent is to
> > provide an api for implementation of delayed unmarshalling and provisioning
> > of codebases, for services implementing a lookup service or
> > ServiceRegistrar, whilst retaining backward compatibility.
> >
> > In other words, the lookup service proxy would implement it.
> >
> > Thoughts I had were to declare IOException's on methods, and to return a
> > String annotation, rather than a URI.
> >
> > What are your thoughts?
> >
> > Cheers,
> >
> > Peter.
> >
> > /*
> > * Licensed to the Apache Software Foundation (ASF) under one
> > * or more contributor license agreements.  See the NOTICE file
> > * distributed with this work for additional information
> > * regarding copyright ownership. The ASF licenses this file
> > * to you under the Apache License, Version 2.0 (the
> > * "License"); you may not use this file except in compliance
> > * with the License. You may obtain a copy of the License at
> > *
> > *          http://www.apache.org/licenses/LICENSE-2.0
> > *
> > * Unless required by applicable law or agreed to in writing, software
> > * distributed under the License is distributed on an "AS IS" BASIS,
> > * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > * See the License for the specific language governing permissions and
> > * limitations under the License.
> > */
> >
> > package org.apache.river.api.lookup;
> >
> > import java.net.URI;
> > import java.security.CodeSource;
> > import net.jini.core.entry.Entry;
> > import net.jini.core.lookup.ServiceID;
> > import net.jini.core.lookup.ServiceItem;
> >
> > /**
> > * MarshalledServiceItem extends ServiceItem and can be used anywhere a
> > * ServiceItem can.  A MarshalledServiceItem implementation instance
> > * contains the marshalled form of a Service and it's Entry's,
> > * the corresponding superclass ServiceItem however contains null values
> > * for the service and can exclude any Entry's, however where Entry
> > * classes already exist at the client, that they be unmarshalled.
> > *
> > * The ServiceID shall be in unmarshalled form always in the ServiceItem
> > super class.
> > *
> > * Since the ServiceItem.service is null, use of this class in existing
> > software
> > * will not return the service, however it will not break that software as
> > * ServiceItem's contract is to set service or Entry's to null when they
> > cannot
> > * be unmarshalled.
> > *
> > * ServiceItem's toString() method will return a different result for
> > * MarshalledServiceItem instances.
> > *
> > * If required, a new ServiceItem that is fully unmarshalled
> > * can be constructed from this class's methods and ServiceID.
> > *
> > * @author Peter Firmstone.
> > */
> > public abstract class MarshalledServiceItem extends ServiceItem{
> >    private static final long SerialVersionUID = 1L;
> >    protected MarshalledServiceItem(ServiceID id, Entry[]
> > unmarshalledEntries){
> >            super(id, (Object) null, unmarshalledEntries);
> >    }
> >    /**
> >      * Unmarshall the service proxy.
> >      * @param load service with local or existing CodeSource or null for
> >      * default.
> >      * @return the service proxy, null if class not found.
> >      */
> >    public abstract Object getService(CodeSource[] code);
> >    /**
> >      * Unmarshall the Entry's
> >      * @return array of Entry's, null entry in array for any class not 
> >found.
> >      */
> >    public abstract Entry[] getEntries();
> >        public abstract URI[] getAnnotations();
> > }
> >
> >

Reply via email to