actionrequestimpl.java

来自「CmisJavaApi」· Java 代码 · 共 169 行

JAVA
169
字号
/* * The contents of this file are subject to the Dyade Public License,  * as defined by the file DYADE_PUBLIC_LICENSE.TXT * * You may not use this file except in compliance with the License. You may * obtain a copy of the License on the Dyade web site (www.dyade.fr). * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific terms governing rights and limitations under the License. * * The Original Code is CmisJava API, including the java package  * fr.dyade.cmis, released September 5, 2000. * * The Initial Developer of the Original Code is Dyade. The Original Code and * portions created by Dyade are Copyright Bull and Copyright INRIA.  * All Rights Reserved. *//*      Copyright 1996-2000 by Institut National de Recherche en Informatique  *                             et en Automatique (INRIA) *          All rights reserved.  See COPYRIGHT in top-level directory. * *      Authors: Laurent Andrey, Eric Dillon, Olivier Festor *///  $Id: ActionRequestImpl.java,v 1.2 2000/09/05 14:30:36 festor Exp $//  $Source: /local/resedas/CVS-Repository/CmisJavaApi/src/fr/dyade/cmis/impl/operation/ActionRequestImpl.java,v $//---------------------------------------------------------------------------////  Todo//---------------------------------------------------------------------------////package  fr.dyade.cmis.impl.operation;import java.util.Enumeration;import fr.dyade.cmis.api.CMISException;import fr.dyade.cmis.*;import fr.dyade.cmis.api.types.*;import fr.dyade.cmis.api.operation.*;import fr.dyade.cmis.api.operation.event.*;import fr.dyade.cmis.impl.*;/** Basic implementation for a CMIS Action request.  *  * This class mainly implements the <code>{@link fr.dyade.cmis.api.operation.ActionRequest}</code> interface.  * It has the filtering and scoping features so  * it is a subclass of <code>{@link FilteredAndScopedOperationImpl}</code>.  *  * Because of java scope properties this class is public, but user can not directly build instances  * as it is an abstract class. Instances are to be built using  * {@link fr.dyade.cmis.api.CMISManagerStack#newActionRequest factory method}.  *  * @version cvs $Id: ActionRequestImpl.java,v 1.2 2000/09/05 14:30:36 festor Exp $  */public  abstract class ActionRequestImpl  extends FilteredAndScopedOperationImpl  implements ActionRequest {	/** Constructor.	  * NOT for public use 	  */	protected ActionRequestImpl( CMISStackImpl pStack ) {	   super(pStack, ACTION_REQUEST);	}      	public boolean isReqValid(){	   return 	      (fMode!=null) &&	      (fActionType!=null) &&	      super.isReqValid();// for base class and object into FilteredAndScopedOperationImpl	}		public final Mode getMode() {	   return fMode;	}		public final ActionTypeId getActionType() {	   return fActionType;	}    	public final Any getActionInformation() {	   return fActionInformation;	}		public final void setMode(Mode pMode) {	   fMode = pMode;	}		public final void setActionType(ActionTypeId pAC) {	   fActionType=pAC;	}		public final void setActionInformation(Any pAI) {	   fActionInformation=pAI;	}		/** The dispatch METHOD for event loop.	  * @param the event (ActionConfirmation/Completion Event) to dispatch on this ActionRequest	  * @see fr.dyade.cmis.impl.CMISEventQueue	  */	public final void dispatchEvent( CMISEvent pEvent ) {	   if (pEvent instanceof ActionConfirmationEvent) {	      ActionConfirmationEvent lEvent=(ActionConfirmationEvent)pEvent;	      lEvent.getRequest().addConfirmation(lEvent.getConfirmation());	      synchronized (fCMISEventListener){		 for (Enumeration e = fCMISEventListener.elements() ; e.hasMoreElements() ;) {		    ((ActionRequestListener)e.nextElement()).confirmation(lEvent);		 }	      }	   } else {	      if (pEvent instanceof ActionCompletionEvent) {		 complete();		 synchronized (fCMISEventListener){		    for (Enumeration e = fCMISEventListener.elements() ; e.hasMoreElements() ;) {		       ((ActionRequestListener)e.nextElement()).completion((ActionCompletionEvent)pEvent);		    }		 }		 endProcessing();	      } else {		 System.err.println("ActionRequestImpl.java:dispatchEvent bad event type INTERNAL ERROR");	      }	   }	}		/**	  * Effective public Action service invocation.	  * This method is synchronized to ensure	  * that no thread (dispatchEvent method) would change  the request state (fState)	  * in the meanwhile.	  */	public final synchronized void doIt() throws CMISException {	   int lInvokeId;	   	   if (fMode==Mode.CONFIRMED) {	      synchronized(fStack.getPendingRequestQueueSynchronization()) {		 lInvokeId=nativeDoIt();		    // fInvokeId has been affected by nativeDoIt.		 setInvokeId(new InvokeId(lInvokeId));		 fStack.addPendingRequest(this);		 startProcessing(); //Well ensure starting processing  BEFORE stop by event dispatching!	      }	   } else {		 lInvokeId=nativeDoIt();	   }	   // not confirmed mode:  invokeid is not significant, 	   // and no confirmation/completion event are expected.	}	/**	  * Add an ActionRequestListner object to an Action request.	  * @param pAl the  listener to add	  */	public final void addActionRequestListener(ActionRequestListener pAl) {	   addCMISListener(pAl);	}	/**	  * Remove an ActionRequestListner object from an Action request	  * @param pAl the  listener to remove	  */	public final void removeActionRequestListener(ActionRequestListener pAl) {	   removeCMISListener(pAl);	}		private Mode fMode=null;	private ActionTypeId fActionType=null;	private Any fActionInformation=null;}  // ActionRequestImpl

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?