org.wso2.carbon.application.deployer.internal
Class ApplicationManager

java.lang.Object
  extended by org.wso2.carbon.application.deployer.internal.ApplicationManager
All Implemented Interfaces:
ApplicationManagerService

public final class ApplicationManager
extends Object
implements ApplicationManagerService

Manages all cApp deployment aspects. Carbon App deployment is done in two steps. A cApp is basically a p2 repo which contains artifacts as features. Step 1 : Find out the artifacts to be installed in this server and install their features through p2 Step 2 : After needed features are installed, complete the cApp deployment by sending the cApp through a chain of handlers This handler chain can contain different cApp artifact deployers. Those can be registered or unregistered using this ApplicationManager API.


Method Summary
 void addCarbonApp(String tenantId, CarbonApplication carbonApp)
          Add a new cApp for a particular tenant.
 void addFaultyCarbonApp(String tenantId, String carbonApp, Exception error)
          Add a new faulty cApp for a particular tenant.
 Artifact buildAppArtifact(CarbonApplication parentApp, InputStream artifactXmlStream)
          Builds the artifact from the given input steam and adds it as a dependency in the provided parent carbon application.
 void buildDependencyTree(Artifact rootArtifact, List<Artifact> allArtifacts)
          If the given artifact is a dependent artifact for the rootArtifact, include it as the actual dependency.
 void cleanupCarbonApps(org.apache.axis2.engine.AxisConfiguration axisConfig)
           
 void deployCarbonApp(String archPath, org.apache.axis2.engine.AxisConfiguration axisConfig)
          Deploy a single app by iterating all handlers and sending apps through the handler chain..
 ArrayList<CarbonApplication> getCarbonApps(String tenantId)
          Get the list of CarbonApplications for the give tenant id.
 HashMap<String,Exception> getFaultyCarbonApps(String tenantId)
          Get the list of faulty CarbonApplications for the give tenant id.
static ApplicationManager getInstance()
          ApplicationManager is singleton.
 CarbonAppPersistenceManager getPersistenceManager(org.apache.axis2.engine.AxisConfiguration axisConfig)
          Retuns the persistence manger for the given axis config (tenant).
 void init()
           
 void registerDeploymentHandler(AppDeploymentHandler handler)
          All app deployers register their deployers throgh this method
 void removeCarbonApp(String tenantId, CarbonApplication carbonApp)
          Remove a cApp for a particular tenant
 void removeFaultyCarbonApp(String tenantId, String appFilePath)
          Remove a faulty cApp for a particular tenant
 void undeployCarbonApp(CarbonApplication carbonApp, org.apache.axis2.engine.AxisConfiguration axisConfig)
          Undeploy the provided carbon App by sending it through the registered undeployment handler chain..
 void unregisterDeploymentHandler(AppDeploymentHandler handler)
          Unregister the specified handler if it is already regitered
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

init

public void init()

getInstance

public static ApplicationManager getInstance()
ApplicationManager is singleton. This can be used to access the instance.

Returns:
- ApplicationManager instance

registerDeploymentHandler

public void registerDeploymentHandler(AppDeploymentHandler handler)
All app deployers register their deployers throgh this method

Specified by:
registerDeploymentHandler in interface ApplicationManagerService
Parameters:
handler - - app deployer which implements the AppDeploymentHandler interface

unregisterDeploymentHandler

public void unregisterDeploymentHandler(AppDeploymentHandler handler)
Unregister the specified handler if it is already regitered

Specified by:
unregisterDeploymentHandler in interface ApplicationManagerService
Parameters:
handler - - input deployer handler

deployCarbonApp

public void deployCarbonApp(String archPath,
                            org.apache.axis2.engine.AxisConfiguration axisConfig)
                     throws Exception
Deploy a single app by iterating all handlers and sending apps through the handler chain..

Specified by:
deployCarbonApp in interface ApplicationManagerService
Parameters:
archPath - - carbon app archive path
axisConfig - - AxisConfiguration of the current tenant
Throws:
Exception - - error on registry actions

buildAppArtifact

public Artifact buildAppArtifact(CarbonApplication parentApp,
                                 InputStream artifactXmlStream)
                          throws org.wso2.carbon.CarbonException
Builds the artifact from the given input steam and adds it as a dependency in the provided parent carbon application.

Parameters:
parentApp - - parent application
artifactXmlStream - - xml input stream of the artifact.xml
Returns:
- Artifact instance if successfull. otherwise null..
Throws:
org.wso2.carbon.CarbonException - - error while building

undeployCarbonApp

public void undeployCarbonApp(CarbonApplication carbonApp,
                              org.apache.axis2.engine.AxisConfiguration axisConfig)
Undeploy the provided carbon App by sending it through the registered undeployment handler chain..

Specified by:
undeployCarbonApp in interface ApplicationManagerService
Parameters:
carbonApp - - CarbonApplication instance
axisConfig - - AxisConfiguration of the current tenant

getCarbonApps

public ArrayList<CarbonApplication> getCarbonApps(String tenantId)
Get the list of CarbonApplications for the give tenant id. If the list is null, return an empty ArrayList

Specified by:
getCarbonApps in interface ApplicationManagerService
Parameters:
tenantId - - tenant id to find cApps
Returns:
- list of tenant cApps

getFaultyCarbonApps

public HashMap<String,Exception> getFaultyCarbonApps(String tenantId)
Get the list of faulty CarbonApplications for the give tenant id. If the list is null, return an empty Arraylist

Specified by:
getFaultyCarbonApps in interface ApplicationManagerService
Parameters:
tenantId - - tenant id to find faulty cApps
Returns:
- list of tenant faulty cApps

addFaultyCarbonApp

public void addFaultyCarbonApp(String tenantId,
                               String carbonApp,
                               Exception error)
Add a new faulty cApp for a particular tenant. If there are no faulty cApps currently, create a new ArrayList and add the new cApp.

Parameters:
tenantId -
carbonApp -

removeFaultyCarbonApp

public void removeFaultyCarbonApp(String tenantId,
                                  String appFilePath)
Remove a faulty cApp for a particular tenant

Parameters:
tenantId -
appFilePath -

addCarbonApp

public void addCarbonApp(String tenantId,
                         CarbonApplication carbonApp)
Add a new cApp for a particular tenant. If there are no cApps currently, create a new ArrayList and add the new cApp.

Parameters:
tenantId - - tenant id of the cApp
carbonApp - - CarbonApplication instance

removeCarbonApp

public void removeCarbonApp(String tenantId,
                            CarbonApplication carbonApp)
Remove a cApp for a particular tenant

Parameters:
tenantId - - tenant id of the cApp
carbonApp - - CarbonApplication instance

buildDependencyTree

public void buildDependencyTree(Artifact rootArtifact,
                                List<Artifact> allArtifacts)
If the given artifact is a dependent artifact for the rootArtifact, include it as the actual dependency. The existing one is a dummy one. So remove it. Do this recursively for the dependent artifacts as well..

Parameters:
rootArtifact - - root to start search
allArtifacts - - all artifacts found under current cApp

getPersistenceManager

public CarbonAppPersistenceManager getPersistenceManager(org.apache.axis2.engine.AxisConfiguration axisConfig)
Retuns the persistence manger for the given axis config (tenant). First try to find it in the PM map. If it is not there, create a new one.

Parameters:
axisConfig - - AxisConfiguration of the current tenant
Returns:
- CarbonAppPersistenceManager for the current tenant

cleanupCarbonApps

public void cleanupCarbonApps(org.apache.axis2.engine.AxisConfiguration axisConfig)


Copyright © 2014 WSO2 Inc. All rights reserved.