Security issues indeed and thus I'd say that a single method that returns a ServiceItem and takes no parameters is the right choice.
Ultimately the codebase is part of the proxy, not something external to be played with outside of the originating service. Not looked at CodebaseAccessClassloader so can't comment on that... On 31 January 2011 00:44, Peter <j...@zeus.net.au> wrote: > 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(); > > > } > > > > > > > >