Package org.apache.muse.tools.generator.projectizer

Source Code of org.apache.muse.tools.generator.projectizer.OsgiAxis2Projectizer

/*
* 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.muse.tools.generator.projectizer;

import java.io.File;
import java.io.InputStream;
import java.util.Map;

import org.apache.muse.tools.generator.util.ConfigurationData;
import org.apache.muse.tools.generator.util.ConfigurationDataDescriptor;
import org.apache.muse.util.FileUtils;
import org.apache.muse.ws.resource.metadata.MetadataDescriptor;
import org.apache.muse.ws.wsdl.WsdlUtils;
import org.w3c.dom.Document;

/**
* A <code>Projectizer</code> that creates a project that compiles to
* an OSGi framework endpoint that can be deployment in a framework like Equinox.
*
* Handles creating bundle manifests, platform initialization scripts and so on.
*
* @author Andrew Eberbach (aeberbac)
*/
public class OsgiAxis2Projectizer extends J2EEAxis2Projectizer {
 
  public void projectize(ConfigurationData configuration) throws Exception {
    ConfigurationData.checkConfiguration(this, configuration);
   
    loadParameters(configuration);
       
    File javaSourceDir = new File(
        _targetDirectory,
        OsgiProjectizerConstants.JAVA_SRC_DIR);
   
    createDirectoryStructure();     
    createJavaSources(javaSourceDir, _filesMaps, _ignoreSets);
    createArtifacts(javaSourceDir);
   
    createOverwriteManifest();
  }
 
  protected void createArtifacts(File javaSourceDir) throws Exception {
    File descriptorFile = new File(_targetDirectory, OsgiProjectizerConstants.MUSE_DESCRIPTOR_FILE);
   
    createBuildFile(_targetDirectory, OsgiProjectizerConstants.BUILD_FILE_RESOURCE, OsgiProjectizerConstants.BUILD_FILE);   
   
    File wsdldir = new File(_targetDirectory, OsgiProjectizerConstants.WSDL_DIR);
   
    createActivatorFile(javaSourceDir, OsgiProjectizerConstants.ACTIVATOR_FILE_RESOURCE);
   
    File routerEntriesDir = new File(_targetDirectory,OsgiProjectizerConstants.ROUTER_ENTRIES_DIR);

        String activatorName = getSymbolicName() + "." + OsgiProjectizerConstants.ACTIVATOR_NAME;
    createManifest(_targetDirectory, OsgiProjectizerConstants.OSGI_MANIFEST_FILE_RESOURCE, OsgiProjectizerConstants.OSGI_MANIFEST_FILE, activatorName);
   
    createConfigIni(_targetDirectory, OsgiProjectizerConstants.CONFIG_FILE_RESOURCE, OsgiProjectizerConstants.CONFIG_FILE);
   
    for(int i=0; i < _capabilitiesList.length; i++) {
      Map capabilities = _capabilitiesList[i];
      MetadataDescriptor rmd = _metadatas[i];
     
      createRMDFile(rmd, _wsdls[i], wsdldir);
      Document wsdl = _wsdls[i];
      createDescriptor(_descriptor, wsdl, descriptorFile, capabilities, Axis2ProjectizerConstants.WSDL_RELATIVE_PATH, i);
      createWSDLFile(wsdl, wsdldir);     
      createRouterEntries(routerEntriesDir, WsdlUtils.getServiceName(wsdl.getDocumentElement()), capabilities);
    }
  }

  protected void createDirectoryStructure() throws Exception {
    File templateDir = new File(System.getProperty(Axis2ProjectizerConstants.MUSE_HOME_PROPERTY), OsgiProjectizerConstants.TEMPLATE_DIR);   
    File destDir = new File(_targetDirectory, OsgiProjectizerConstants.PLUGINS_DIR);   
    copyTemplate(templateDir, destDir);
   
    File axis2ExtraJars = new File(System.getProperty(Axis2ProjectizerConstants.MUSE_HOME_PROPERTY), OsgiAxis2ProjectizerConstants.AXIS2_EXTRA_JARS);
    copyTemplate(axis2ExtraJars, destDir);
   
    File modulesDir = new File(System.getProperty(Axis2ProjectizerConstants.MUSE_HOME_PROPERTY),OsgiProjectizerConstants.MODULES_DIR);
    copyJars(OsgiAxis2ProjectizerConstants.REQUIRED_MODULES, modulesDir, destDir);
   
    File libDir = new File(_targetDirectory, OsgiProjectizerConstants.LIB_DIR);
    copyJars(OsgiProjectizerConstants.REQUIRED_LIBS, modulesDir, libDir);
  }

  protected void createConfigIni(File destDir, String configFileResource, String configFileName) throws Exception {
    InputStream configIS = FileUtils.loadFromContext(OsgiAxis2Projectizer.class,configFileResource );
   
    File configFile = new File(destDir, configFileName);
    copyStreamCheck(configIS, configFile);
  }

  protected void createActivatorFile(File srcDir, String activatorFileResource) throws Exception {
    InputStream activatorTemplateIS = FileUtils.loadFromContext(OsgiAxis2Projectizer.class, activatorFileResource);
 
    Object[] filler = { getSymbolicName() };
    String newActivator = loadString(activatorTemplateIS, filler);
   
    String activatorDirName = getSymbolicName().toString();
        File activatorDir = new File(srcDir, activatorDirName);
        File activatorFile = new File(activatorDir, OsgiProjectizerConstants.ACTIVATOR_NAME + ".java");
       
    writeToFileCheck(newActivator, activatorFile);
  }

  protected void createManifest(File baseTargetDir, String manifestFileResource, String manifestFileName, String activatorFileName) throws Exception {
    InputStream manifestTemplateIS = FileUtils.loadFromContext(OsgiAxis2Projectizer.class ,manifestFileResource);   
   
    Object[] filler = { getSymbolicName(), activatorFileName, getSymbolicName(), getSymbolicName() };
    String newManifest = loadString(manifestTemplateIS, filler);
   
    File manifestFile = new File(baseTargetDir, manifestFileName);
    writeToFileCheck(newManifest, manifestFile);
  }

  protected Object getSymbolicName() {
    if(_targetDirectory.equals(FileUtils.CURRENT_DIR)) {
      return _targetDirectory.getAbsoluteFile().getParentFile().getName();
    }
    return _targetDirectory.getAbsoluteFile().getName();
  }

  public ConfigurationDataDescriptor[] getConfigurationDataDescriptions() {
    return REQUIRED_PARAMETERS;
  }
}
TOP

Related Classes of org.apache.muse.tools.generator.projectizer.OsgiAxis2Projectizer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.