001: //
002: // This file is part of the midas package.
003: //
004: // The contents of this file are subject to the Mozilla Public License
005: // Version 1.1 (the "License"); you may not use this file except in
006: // compliance with the License. You may obtain a copy of the License at
007: // http://www.mozilla.org/MPL/
008: //
009: // Software distributed under the License is distributed on an "AS IS" basis,
010: // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
011: // for the specific language governing rights and limitations under the
012: // License.
013: //
014: // The Original Code is midas.
015: //
016: // The Initial Developer of the Original Code is Andrei Popovici. Portions
017: // created by Andrei Popovici are Copyright (C) 2002 Andrei Popovici.
018: // All Rights Reserved.
019: //
020: // Contributor(s):
021: // $Id: RemoteAspectManager.java,v 1.1.1.1 2003/07/02 15:30:52 apopovic Exp $
022: // =====================================================================
023: //
024: // (history at end)
025: //
026: package ch.ethz.prose.tools;
027:
028: import java.rmi.Remote;
029: import java.rmi.RemoteException;
030: import java.util.List;
031:
032: import ch.ethz.prose.Aspect;
033: import ch.ethz.prose.query.AspectSurrogate;
034:
035: /** Class <code>RemoteExtensionManager</code> is a remote (RMI) interface
036: * to a local extension manager.
037: *
038: * @version $Revision: 1.1.1.1 $
039: * @author Andrei Popovici
040: */
041: public interface RemoteAspectManager extends Remote
042:
043: {
044: /** Insert the extension <code>ext</code> into this <em>AspectManager</em>
045: * and perform additional actions. The insertion
046: * of the crosscuts belonging to the specified extnsion
047: * is done in the proper order (first crosscut is registered as
048: * the first listener).
049: */
050: public void insert(Aspect ext) throws RemoteException;
051:
052: /** Withdraw the extension <code>ext</code> from this
053: * <code>AspectManager</code> and perform withdrawing
054: * specific actions. Note that the specified extension has to be the
055: * same object as the one to be withdrawn. Because an extension usually
056: * has its own state, the application layer <em>using</em> an extension
057: * manager has to find out which extension object to withdraw, by inspecting
058: * the <code>getAllAspects()</code> set.
059: */
060:
061: public void withdraw(AspectSurrogate ext) throws RemoteException,
062: ClassNotFoundException;
063:
064: public void insert(Aspect ext, Object txId) throws RemoteException;
065:
066: public void withdraw(AspectSurrogate ext, Object txId)
067: throws RemoteException, ClassNotFoundException;
068:
069: public void commit(Object txId) throws RemoteException;
070:
071: public void abort(Object txId) throws RemoteException;
072:
073: /**
074: * Return a list of the current inserted extensions.
075: */
076: public List allAspects() throws RemoteException;
077:
078: public List allJoinpoints() throws RemoteException;
079:
080: /**
081: * Return a List of Tupel objects (without duplicates) that represents the result of querying the system
082: * with a list of Aspects.
083: */
084: public List queryAspects(List aspectList, int selectFields,
085: int groupBy) throws RemoteException;
086:
087: /**
088: * Return a List of Tupel objects (without duplicates) that represents the result of querying the system
089: * with a list of Crosscuts.
090: */
091: public List queryCrosscuts(List crosscutList, int selectFields,
092: int groupBy) throws RemoteException;
093:
094: /**
095: * Return a List of Tupel objects (without duplicates) that represents the result of querying the system
096: * with a list of JoinPointRequests.
097: */
098: public List queryJoinpoints(List joinpointList, int selectFields,
099: int groupBy) throws RemoteException;
100:
101: }
102:
103: //======================================================================
104: //
105: // $Log: RemoteAspectManager.java,v $
106: // Revision 1.1.1.1 2003/07/02 15:30:52 apopovic
107: // Imported from ETH Zurich
108: //
109: // Revision 1.1 2003/05/25 13:25:18 popovici
110: // Refactoring
111: // inf.iks.tools is now prose.tools
112: // Stupid 'MyTableModel' renamed to 'WorksheetClientMode'
113: // - other renamings from bad names to reasonable names
114: //
115: // Revision 1.6 2003/05/25 11:48:51 popovici
116: // Major transformation of the prose tools:
117: // - GUI now stable and supports aspect insertion from another classpath than its own
118: // - CommandlineProseClient supports transactions test managers, independent classpath and has a better errhanling
119: //
120: // Revision 1.5 2003/05/20 16:04:59 popovici
121: //
122: // New QueryManager replaces functionality in AspectManager (better Soc)
123: // New 'Surrogate' classes for usage in the QueryManager
124: // The 'RemoteAspectManager' and tools modified to use the Surrogates and the QueryManager
125: //
126: // Revision 1.4 2003/05/05 14:03:12 popovici
127: // renaming from runes to prose
128: //
129: // Revision 1.3 2003/04/17 15:14:55 popovici
130: // Extension->Aspect renaming
131: //
132: // Revision 1.2 2003/03/04 18:35:55 popovici
133: // Organization of imprts
134: //
135: // Revision 1.1 2003/02/17 09:23:52 popovici
136: // RemoteAspectManager interface, implementation, and client added;
137: // Benchmark changed to work with the remote aspect manager;
138: // Benchmark changed to include aspect insertion;
139: //
140: // Revision 1.2 2002/07/25 08:55:39 popovici
141: // Mozilla Licensing
142: //
143: // Revision 1.1.1.1 2001/11/30 14:50:28 popovici
144: // Sources from runes
145: //
146: // Revision 1.1.2.1 2001/03/26 15:05:40 mrmuller
147: // adapted to new package structure
148: //
149: // Revision 1.1.2.2 2001/02/15 11:40:57 popovici
150: // Documentation Improvements
151: //
152: // Revision 1.1.2.1 2001/02/14 13:44:41 popovici
153: // Initial Revision
154: //
155: //
156: //
|