public void addApplication( Application application ) { applications.add( application ); List<String> urls = application.getUrls(); if( urls == null || urls.isEmpty() ) { applicationMap.put( fixApplicationUrl( application.getName() ), application ); } else { for( String url : application.getUrls() ) { applicationMap.put( fixApplicationUrl( url ), application ); } } }
@Override public void setRole(String role ) { setName( role ); }
private static org.apache.knox.gateway.topology.Application getApplication(Application application) { org.apache.knox.gateway.topology.Application applicationResource = new org.apache.knox.gateway.topology.Application(); applicationResource.setRole(application.getRole()); applicationResource.setName(application.getName()); if (application.getVersion() != null) { applicationResource.setVersion(new Version(application.getVersion())); } for ( Param param : application.getParams() ) { applicationResource.addParam( getParam(param) ); } for ( String url : application.getUrls() ) { applicationResource.getUrls().add( url ); } return applicationResource; }
private static Application getApplication( org.apache.knox.gateway.topology.Application application) { Application applicationResource = new Application(); applicationResource.setRole(application.getRole()); applicationResource.setName(application.getName()); Version version = application.getVersion(); if (version != null) { applicationResource.setVersion(version.toString()); } Collection<org.apache.knox.gateway.topology.Param> paramsList = application.getParamsList(); if (paramsList != null && !paramsList.isEmpty()) { for ( org.apache.knox.gateway.topology.Param param : paramsList ) { applicationResource.getParams().add(getParam(param)); } } for ( String url : application.getUrls() ) { applicationResource.getUrls().add( url ); } return applicationResource; }
public String getRole() { return getName(); }
@Override public String getRole() { return getName(); }
public void addApplication( Application application ) { applications.add( application ); List<String> urls = application.getUrls(); if( urls == null || urls.isEmpty() ) { applicationMap.put( fixApplicationUrl( application.getName() ), application ); } else { for( String url : application.getUrls() ) { applicationMap.put( fixApplicationUrl( url ), application ); } } }
public ApplicationDeploymentContributor( GatewayConfig config, Application application ) throws DeploymentException { try { File appsDir = new File( config.getGatewayApplicationsDir() ); File appDir = new File( appsDir, application.getName() ); File serviceFile = new File( appDir, SERVICE_DEFINITION_FILE_NAME ); File rewriteFile = new File( appDir, REWRITE_RULES_FILE_NAME ); serviceDefinition = loadServiceDefinition( application, serviceFile ); serviceRules = loadRewriteRules( application, rewriteFile ); } catch ( IOException e ) { throw new DeploymentException( "Failed to deploy application: " + application.getName(), e ); } catch ( JAXBException e ){ throw new DeploymentException( "Failed to deploy application: " + application.getName(), e ); } }
public void setRole( String role ) { setName( role ); }
static void validateNoAppsWithDuplicateUrlsInTopology( Topology topology ) { if( topology != null ) { Collection<Application> apps = topology.getApplications(); if( apps != null ) { for( Application app : apps ) { List<String> urls = app.getUrls(); if( urls == null || urls.isEmpty() ) { urls = new ArrayList<>(1); urls.add( app.getName() ); } for( String url : urls ) { List<Application> dups = findApplicationsByUrl( topology, url ); if( dups != null ) { for( Application dup : dups ) { if( dup != app ) { //NOPMD - check for exact same object throw new DeploymentException( "Topology " + topology.getName() + " contains applications " + app.getName() + " and " + dup.getName() + " with the same url: " + url ); } } } } } } } }
public ApplicationDeploymentContributor( GatewayConfig config, Application application ) throws DeploymentException { try { File appsDir = new File( config.getGatewayApplicationsDir() ); File appDir = new File( appsDir, application.getName() ); File serviceFile = new File( appDir, SERVICE_DEFINITION_FILE_NAME ); File rewriteFile = new File( appDir, REWRITE_RULES_FILE_NAME ); serviceDefinition = loadServiceDefinition( application, serviceFile ); serviceRules = loadRewriteRules( rewriteFile ); } catch ( IOException | JAXBException e ) { throw new DeploymentException( "Failed to deploy application: " + application.getName(), e ); } }
static void validateNoAppsWithDuplicateUrlsInTopology( Topology topology ) { if( topology != null ) { Collection<Application> apps = topology.getApplications(); if( apps != null ) { for( Application app : apps ) { List<String> urls = app.getUrls(); if( urls == null || urls.isEmpty() ) { urls = new ArrayList<>(1); urls.add( app.getName() ); } for( String url : urls ) { List<Application> dups = findApplicationsByUrl( topology, url ); if( dups != null ) { for( Application dup : dups ) { if( dup != app ) { throw new DeploymentException( "Topology " + topology.getName() + " contains applications " + app.getName() + " and " + dup.getName() + " with the same url: " + url ); } } } } } } } }
static void validateNoAppsWithRootUrlsInServicesTopology( Topology topology ) { if( topology != null ) { if( topology.getServices() != null && !topology.getServices().isEmpty() ) { List<Application> dups = findApplicationsByUrl( topology, "/" ); if( dups != null && !dups.isEmpty() ) { throw new DeploymentException( "Topology " + topology.getName() + " contains both services and an application " + dups.get( 0 ).getName() + " with a root url." ); } } } }
private synchronized void internalDeployApplications( Topology topology, File topoDir ) throws IOException, ZipException, ParserConfigurationException, TransformerException, SAXException { if( topology != null ) { Collection<Application> applications = topology.getApplications(); if( applications != null ) { for( Application application : applications ) { List<String> urls = application.getUrls(); if( urls == null || urls.isEmpty() ) { internalDeployApplication( topology, topoDir, application, application.getName() ); } else { for( String url : urls ) { internalDeployApplication( topology, topoDir, application, url ); } } } } } }
static void validateNoAppsWithRootUrlsInServicesTopology( Topology topology ) { if( topology != null ) { if( topology.getServices() != null && !topology.getServices().isEmpty() ) { List<Application> dups = findApplicationsByUrl( topology, "/" ); if( dups != null && !dups.isEmpty() ) { throw new DeploymentException( "Topology " + topology.getName() + " contains both services and an application " + dups.get( 0 ).getName() + " with a root url." ); } } } }
private synchronized void internalDeployApplications( Topology topology, File topoDir ) throws IOException, ZipException, ParserConfigurationException, TransformerException, SAXException { if( topology != null ) { Collection<Application> applications = topology.getApplications(); if( applications != null ) { for( Application application : applications ) { List<String> urls = application.getUrls(); if( urls == null || urls.isEmpty() ) { internalDeployApplication( topoDir, application, application.getName() ); } else { for( String url : urls ) { internalDeployApplication( topoDir, application, url ); } } } } } }
private static ServiceDefinition loadServiceDefinition( Application application, File file ) throws JAXBException, FileNotFoundException, IOException { ServiceDefinition definition; if( !file.exists() ) { definition = new ServiceDefinition(); definition.setName( application.getName() ); List<Route> routes = new ArrayList<>(1); Route route; route = new Route(); route.setPath( "/?**" ); routes.add( route ); route = new Route(); route.setPath( "/**?**" ); routes.add( route ); definition.setRoutes( routes ); } else { Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); try(InputStream inputStream = Files.newInputStream(file.toPath()) ) { definition = (ServiceDefinition) unmarshaller.unmarshal( inputStream ); } } return definition; }
static List<Application> findApplicationsByUrl( Topology topology, String url ) { List<Application> foundApps = new ArrayList<>(); if( topology != null ) { url = Urls.trimLeadingAndTrailingSlash( url ); Collection<Application> searchApps = topology.getApplications(); if( searchApps != null ) { for( Application searchApp : searchApps ) { List<String> searchUrls = searchApp.getUrls(); if( searchUrls == null || searchUrls.isEmpty() ) { searchUrls = new ArrayList<>(1); searchUrls.add( searchApp.getName() ); } for( String searchUrl : searchUrls ) { if( url.equalsIgnoreCase( Urls.trimLeadingAndTrailingSlash( searchUrl ) ) ) { foundApps.add( searchApp ); break; } } } } } return foundApps; }
private static ServiceDefinition loadServiceDefinition( Application application, File file ) throws JAXBException, FileNotFoundException, IOException { ServiceDefinition definition; if( !file.exists() ) { definition = new ServiceDefinition(); definition.setName( application.getName() ); List<Route> routes = new ArrayList<>(1); Route route; route = new Route(); route.setPath( "/?**" ); routes.add( route ); route = new Route(); route.setPath( "/**?**" ); routes.add( route ); definition.setRoutes( routes ); } else { JAXBContext context = JAXBContext.newInstance( ServiceDefinition.class ); Unmarshaller unmarshaller = context.createUnmarshaller(); try( FileInputStream inputStream = new FileInputStream( file ) ) { definition = (ServiceDefinition) unmarshaller.unmarshal( inputStream ); } } return definition; }
static List<Application> findApplicationsByUrl( Topology topology, String url ) { List<Application> foundApps = new ArrayList<>(); if( topology != null ) { url = Urls.trimLeadingAndTrailingSlash( url ); Collection<Application> searchApps = topology.getApplications(); if( searchApps != null ) { for( Application searchApp : searchApps ) { List<String> searchUrls = searchApp.getUrls(); if( searchUrls == null || searchUrls.isEmpty() ) { searchUrls = new ArrayList<>(1); searchUrls.add( searchApp.getName() ); } for( String searchUrl : searchUrls ) { if( url.equalsIgnoreCase( Urls.trimLeadingAndTrailingSlash( searchUrl ) ) ) { foundApps.add( searchApp ); break; } } } } } return foundApps; }