You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2011/02/03 10:33:54 UTC

svn commit: r1066768 - in /incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup: LocalServiceItem.java MarshalledServiceItem.java ServiceResultStreamFilter.java ServiceResultStreamUnmarshaller.java StreamServiceRegistrar.java

Author: peter_firmstone
Date: Thu Feb  3 09:33:53 2011
New Revision: 1066768

URL: http://svn.apache.org/viewvc?rev=1066768&view=rev
Log:
Change MarshalledServiceItem to LocalServiceItem, refactor StreamServiceRegistrar

Added:
    incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/LocalServiceItem.java
      - copied, changed from r1065559, incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/MarshalledServiceItem.java
Removed:
    incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/MarshalledServiceItem.java
Modified:
    incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamFilter.java
    incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamUnmarshaller.java
    incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/StreamServiceRegistrar.java

Copied: incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/LocalServiceItem.java (from r1065559, incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/MarshalledServiceItem.java)
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/LocalServiceItem.java?p2=incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/LocalServiceItem.java&p1=incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/MarshalledServiceItem.java&r1=1065559&r2=1066768&rev=1066768&view=diff
==============================================================================
--- incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/MarshalledServiceItem.java (original)
+++ incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/LocalServiceItem.java Thu Feb  3 09:33:53 2011
@@ -25,38 +25,48 @@ 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. 
+ * LocalServiceItem extends ServiceItem and can be used anywhere a 
+ * ServiceItem can.  A LocalServiceItem implementation instance 
+ * is otherwise equivalent, except only local code is used for 
+ * resolving classes during unmarshalling or deserialization.
+ * 
+ * Some fields in the ServiceItem may be null or fields in Entry's may be null or 
+ * even the service may be null.
  * 
  * 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.
+ * Since the ServiceItem.service may be null, use of this class in existing software
+ * may not return the service, unless it is a reflective proxy only, however it 
+ * must honour ServiceItem's contract and set service, Entry's or their fields
+ * to null when they cannot be unmarshalled with local code.
  * 
  * ServiceItem's toString() method will return a different result for
- * MarshalledServiceItem instances.
+ * LocalServiceItem instances.
  * 
  * If required, a new ServiceItem that is fully unmarshalled 
- * can be constructed from this class's methods and ServiceID.
+ * using remote codebases when required can be obtained by calling #unmarshall().
  * 
  * @author Peter Firmstone.
  */
-public abstract class MarshalledServiceItem extends ServiceItem{
+public abstract class LocalServiceItem extends ServiceItem{
     private static final long SerialVersionUID = 1L;
-    protected MarshalledServiceItem(ServiceID id, Entry[] unmarshalledEntries){
+    protected LocalServiceItem(ServiceID id, Entry[] unmarshalledEntries){
         super(id, (Object) null, unmarshalledEntries);
     }
+    
+    /* Default constructor for serializable sub class.
+     */ 
+    protected LocalServiceItem(){
+        super(null, null, null);
+    }
     /**
-     * Unmarshall the ServiceItem.  The returned ServiceItem may have a null service 
-     * or entries , if unmarshalling is unsuccessful.
-     *
-     * @return ServiceItem, totally unmarshalled.
+     * Using remote and local code as required unmarshall a new ServiceItem. 
+     * The returned ServiceItem may have a null service 
+     * or Entry's , if unmarshalling is unsuccessful, however it must not
+     * be an instance of this class.
+     * 
+     * @return ServiceItem, totally unmarshalled, using remote codebase resources
+     * in addition to any local classpath or resources.
      */
     public abstract ServiceItem unmarshall();
 }

Modified: incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamFilter.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamFilter.java?rev=1066768&r1=1066767&r2=1066768&view=diff
==============================================================================
--- incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamFilter.java (original)
+++ incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamFilter.java Thu Feb  3 09:33:53 2011
@@ -1,17 +1,30 @@
 /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
+ * 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.io.IOException;
-import net.jini.lookup.*;
 import org.apache.river.api.util.ResultStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 import net.jini.core.lookup.ServiceItem;
+import net.jini.lookup.ServiceItemFilter;
 
 /**
  * A Filter utility class designed to filter out unwanted results.  Filters can

Modified: incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamUnmarshaller.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamUnmarshaller.java?rev=1066768&r1=1066767&r2=1066768&view=diff
==============================================================================
--- incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamUnmarshaller.java (original)
+++ incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/ServiceResultStreamUnmarshaller.java Thu Feb  3 09:33:53 2011
@@ -20,18 +20,18 @@ package org.apache.river.api.lookup;
 
 import java.io.IOException;
 import java.security.CodeSource;
-import org.apache.river.api.lookup.MarshalledServiceItem;
+import org.apache.river.api.lookup.LocalServiceItem;
 import org.apache.river.api.util.ResultStream;
 import net.jini.core.lookup.*;
 
 /**
  * Add this to the ResultStream filter chain
  * {@link StreamServiceRegistrar#lookup(ServiceTemplate, Class[], int)}
- * to unmarshall any MarshalledServiceItem's in the stream, prior to 
+ * to unmarshall any LocalServiceItem's in the stream, prior to 
  * proxy verification, or applying constraints.
  * 
  * @author Peter Firmstone.
- * @see MarshalledServiceItem.
+ * @see LocalServiceItem.
  * @see StreamServiceRegistrar
  */
 public class ServiceResultStreamUnmarshaller implements ResultStream<ServiceItem> {
@@ -50,13 +50,13 @@ public class ServiceResultStreamUnmarsha
     public ServiceItem get() throws IOException {
 	if (input == null) return null;
         for(Object item = input.get(); item != null; item = input.get()) {
-            if (item instanceof MarshalledServiceItem){
-                MarshalledServiceItem msi = (MarshalledServiceItem) item;
+            if (item instanceof LocalServiceItem){
+                LocalServiceItem msi = (LocalServiceItem) item;
                 return msi.unmarshall();
             } else if (item instanceof ServiceItem) {
 		return (ServiceItem) item;
 	    }
-	    /* If item is not an instanceof ServiceItem or MarshalledServiceItem
+	    /* If item is not an instanceof ServiceItem or LocalServiceItem
 	     * it is ignored and the next item in the ResultStream is retrieved.
 	     */
         }//end item loop

Modified: incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/StreamServiceRegistrar.java
URL: http://svn.apache.org/viewvc/incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/StreamServiceRegistrar.java?rev=1066768&r1=1066767&r2=1066768&view=diff
==============================================================================
--- incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/StreamServiceRegistrar.java (original)
+++ incubator/river/jtsk/skunk/pepe/src/org/apache/river/api/lookup/StreamServiceRegistrar.java Thu Feb  3 09:33:53 2011
@@ -88,72 +88,4 @@ public interface StreamServiceRegistrar 
      */
     ResultStream lookup(ServiceTemplate tmpl, 
         Class[] unmarshalledEntries, int maxBatchSize) throws IOException;
-    
-    /**
-     * Looks at all service items that match the specified template, finds
-     * every entry (among those service items) that either doesn't match any
-     * entry templates or is a subclass of at least one matching entry
-     * template, and returns the set of the (most specific) classes of those
-     * entries.  Duplicate classes are eliminated, and the order of classes
-     * within the returned array is arbitrary.  Null (not an empty array) is
-     * returned if there are no such entries or no matching items.  If a
-     * returned class cannot be deserialized, that element of the returned
-     * array is set to null and no exception is thrown.
-     *
-     * @param tmpl template to match
-     * @param maxBatchSize 
-     * @return a ResultStream containing Class of entry (attribute sets) for every service
-     * that matches the specified template
-     * @throws java.rmi.RemoteException
-     */
-    ResultStream getEntryClasses(ServiceTemplate tmpl, int maxBatchSize) 
-            throws IOException;
-
-    /**
-     * Looks at all service items that match the specified template, finds
-     * every entry (among those service items) that matches
-     * tmpl.attributeSetTemplates[setIndex], and returns the set of values
-     * of the specified field of those entries.  Duplicate values are
-     * eliminated, and the order of values isarbitrary.  
-     * If a returned value cannot be deserialized, that
-     * element is excluded and no exception is thrown.
-     *
-     * @param tmpl template to match
-     * @param setIndex index into tmpl.attributeSetTemplates
-     * @param field name of field of tmpl.attributeSetTemplates[setIndex]
-     *
-     * @param maxBatchSize 
-     * @return a ResultStream of objects that represents field values of entries
-     * associated with services that meet the specified matching
-     * criteria
-     *
-     * @throws NoSuchFieldException field does not name a field of the
-     * entry template
-     * @throws java.rmi.RemoteException
-     */
-    ResultStream getFieldValues(ServiceTemplate tmpl, int setIndex, String field,
-            int maxBatchSize) throws NoSuchFieldException, IOException;
-    
-    /**
-     * Looks at all service items that match the specified template, and for
-     * every service item finds the most specific type (class or interface)
-     * or types the service item is an instance of that are neither equal to,
-     * nor a superclass of, any of the service types in the template and that
-     * have names that start with the specified prefix, and returns the set
-     * of all such types.  Duplicate types are eliminated, and the order of
-     * types within the returned array is arbitrary.  
-     * Null is returned if there are no such types.  If a returned type
-     * cannot be deserialized, that element is excluded and no exception is thrown.
-     *
-     * @param tmpl template to match
-     * @param prefix class name prefix
-     *
-     * @param maxBatchSize 
-     * @return a ResultStream containing a Class for all services that either match the
-     * specified template or match the specified prefix
-     * @throws java.rmi.RemoteException
-     */
-    ResultStream getServiceTypes(ServiceTemplate tmpl, String prefix, 
-            int maxBatchSize) throws IOException;
-
 }