buildframework/helium/sf/java/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java
changeset 628 7c4a911dc066
parent 587 85df38eb4012
--- a/buildframework/helium/sf/java/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java	Wed Jun 16 16:51:40 2010 +0300
+++ b/buildframework/helium/sf/java/scm/src/com/nokia/maven/scm/manager/BasicExtendedScmManager.java	Fri Aug 13 14:59:05 2010 +0300
@@ -1,20 +1,19 @@
 /*
-* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  
-*
-*/
-
+ * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:  
+ *
+ */
 
 package com.nokia.maven.scm.manager;
 
@@ -23,35 +22,38 @@
 import org.apache.maven.scm.CommandParameters;
 import org.apache.maven.scm.ScmException;
 import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.log.ScmLogDispatcher;
+import org.apache.maven.scm.log.ScmLogger;
 import org.apache.maven.scm.manager.BasicScmManager;
 import org.apache.maven.scm.repository.ScmRepository;
 
+import com.nokia.maven.scm.command.info.InfoScmResult;
 import com.nokia.maven.scm.command.pull.PullScmResult;
 import com.nokia.maven.scm.command.tags.TagsScmResult;
-import com.nokia.maven.scm.command.info.InfoScmResult;
 import com.nokia.maven.scm.provider.ScmProviderExt;
 
 /**
- * Extended SCM manager which implements the additional functionalities
- * defined by the ExtendedScmManager.
- *
+ * Extended SCM manager which implements the additional functionalities defined by the
+ * ExtendedScmManager.
+ * 
  */
-public class BasicExtendedScmManager extends BasicScmManager implements
-        ExtendedScmManager {
+public class BasicExtendedScmManager extends BasicScmManager implements ExtendedScmManager {
 
+    // Use dispatcher rather than DefaultLog.
+    private ScmLogDispatcher logDispatcher = new ScmLogDispatcher();
+    
     /**
      * {@inheritDoc}
      */
     @Override
-    public PullScmResult pull(ScmRepository repository, File path)
-            throws ScmException {
+    public PullScmResult pull(ScmRepository repository, File path) throws ScmException {
         try {
-            ScmProviderExt provider = (ScmProviderExt) this
-                    .getProviderByRepository(repository);
+            ScmProviderExt provider = (ScmProviderExt) this.getProviderByRepository(repository);
             return provider.pull(repository, path);
-        } catch (ClassCastException exc) {
+        }
+        catch (ClassCastException exc) {
             throw new ScmException("The " + repository.getProvider().toString()
-                    + " does not support extended functionalities.");
+                + " does not support extended functionalities.");
         }
     }
 
@@ -61,12 +63,27 @@
     @Override
     public TagsScmResult tags(ScmRepository repository, File path) throws ScmException {
         try {
-            ScmProviderExt provider = (ScmProviderExt) this
-                    .getProviderByRepository(repository);
+            ScmProviderExt provider = (ScmProviderExt) this.getProviderByRepository(repository);
             return provider.tags(repository, new ScmFileSet(path), new CommandParameters());
-        } catch (ClassCastException exc) {
+        }
+        catch (ClassCastException exc) {
             throw new ScmException("The " + repository.getProvider().toString()
-                    + " does not support extended functionalities.");
+                + " does not support extended functionalities.");
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public InfoScmResult info(ScmRepository repository, File path) throws ScmException {
+        try {
+            ScmProviderExt provider = (ScmProviderExt) this.getProviderByRepository(repository);
+            return provider.info(repository, new ScmFileSet(path), new CommandParameters());
+        }
+        catch (ClassCastException exc) {
+            throw new ScmException("The " + repository.getProvider().toString()
+                + " does not support extended functionalities.");
         }
     }
     
@@ -74,15 +91,15 @@
      * {@inheritDoc}
      */
     @Override
-    public InfoScmResult info(ScmRepository repository, File path) throws ScmException {
-        try {
-            ScmProviderExt provider = (ScmProviderExt) this
-                    .getProviderByRepository(repository);
-            return provider.info(repository, new ScmFileSet(path), new CommandParameters());
-        } catch (ClassCastException exc) {
-            throw new ScmException("The " + repository.getProvider().toString()
-                    + " does not support extended functionalities.");
-        }
+    protected ScmLogger getScmLogger() {
+        return logDispatcher;
+    }   
+    
+    /**
+     * Add a custom ScmLogger for message reporting. 
+     * @param logger
+     */
+    public void addListener(ScmLogger logger) {
+        logDispatcher.addListener(logger);
     }
-
 }