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(); > > } > > > >