List of usage examples for org.apache.commons.compress.archivers ArchiveEntry getName
public String getName();
From source file:org.haiku.haikudepotserver.pkg.job.PkgScreenshotImportArchiveJobRunner.java
private int consumeScreenshotArchiveEntries(ByteSource byteSource, Consumer<ArchiveEntryWithPkgNameAndOrdering> archiveEntryConsumer) throws IOException { int counter = 0; try (InputStream inputStream = byteSource.openStream(); GZIPInputStream gzipInputStream = new GZIPInputStream(inputStream); ArchiveInputStream tarArchiveInputStream = new TarArchiveInputStream(gzipInputStream)) { ArchiveEntry archiveEntry; while (null != (archiveEntry = tarArchiveInputStream.getNextEntry())) { Matcher matcher = PATTERN_PATH.matcher(archiveEntry.getName()); if (matcher.matches()) { archiveEntryConsumer//from w w w. j a v a2 s . c o m .accept(new ArchiveEntryWithPkgNameAndOrdering(tarArchiveInputStream, archiveEntry, matcher.group(GROUP_PKGNAME), Integer.parseInt(matcher.group(GROUP_LEAFNAME)))); counter++; } } } return counter; }
From source file:org.haiku.haikudepotserver.pkg.job.PkgScreenshotImportArchiveJobRunner.java
/** * <p>Goes through the archive and captures information about each screenshot.</p> */// w ww . j a va 2s.com private void collectScreenshotMetadataFromArchive(Map<String, ScreenshotImportMetadatas> data, ArchiveInputStream archiveInputStream, ArchiveEntry archiveEntry, String pkgName, int order) { ScreenshotImportMetadatas metadatas = data.get(pkgName); if (null == metadatas) { metadatas = new ScreenshotImportMetadatas(); ObjectContext context = serverRuntime.newContext(); Optional<Pkg> pkgOptional = Pkg.tryGetByName(context, pkgName); if (!pkgOptional.isPresent()) { metadatas.setNotFound(); } data.put(pkgName, metadatas); } if (!metadatas.isNotFound()) { HashingInputStream hashingInputStream = new HashingInputStream(HASH_FUNCTION, archiveInputStream); try { ByteStreams.copy(hashingInputStream, ByteStreams.nullOutputStream()); } catch (IOException ioe) { throw new UncheckedIOException(ioe); } metadatas.add(new FromArchiveScreenshotMetadata(order, archiveEntry.getSize(), hashingInputStream.hash(), archiveEntry.getName())); } }
From source file:org.haiku.haikudepotserver.pkg.job.PkgScreenshotImportArchiveJobRunner.java
/** * <p>If this screenshot coming in from the archive does not exist persisted then load it in.</p> *///from www. j a v a2 s. c o m private void importScreenshotsFromArchiveAndReport(CSVWriter writer, ScreenshotImportMetadatas data, ArchiveInputStream archiveInputStream, ArchiveEntry archiveEntry, String pkgName, int order) { String row[] = { archiveEntry.getName(), // path pkgName, // pkg "", // action "", // message "", // code }; if (data.isNotFound()) { row[CSV_COLUMN_ACTION] = Action.NOTFOUND.name(); } else { FromArchiveScreenshotMetadata fromArchiveScreenshotMetadata = data.getFromArchiveScreenshots().stream() .filter((as) -> as.getLength() == archiveEntry.getSize()).filter((as) -> as.getOrder() == order) .findAny().orElseThrow( () -> new IllegalStateException("unable to find the from-archive screenshot metadata")); Optional<ExistingScreenshotMetadata> existingScreenshotMetadata = data.getExistingScreenshots().stream() .filter((es) -> archiveEntry.getSize() == es.getLength()) .filter((es) -> fromArchiveScreenshotMetadata.getDataHash().equals(es.getDataHash())).findAny(); if (existingScreenshotMetadata.isPresent()) { row[CSV_COLUMN_ACTION] = Action.PRESENT.name(); row[CSV_COLUMN_CODE] = existingScreenshotMetadata.get().getCode(); } else { ObjectContext context = serverRuntime.newContext(); try { PkgScreenshot screenshot = pkgScreenshotService.storePkgScreenshotImage(archiveInputStream, context, Pkg.getByName(context, pkgName), fromArchiveScreenshotMetadata.getDerivedOrder()); row[CSV_COLUMN_CODE] = screenshot.getCode(); row[CSV_COLUMN_ACTION] = Action.ADDED.name(); } catch (IOException ioe) { throw new UncheckedIOException(ioe); } catch (BadPkgScreenshotException e) { row[CSV_COLUMN_ACTION] = Action.INVALID.name(); row[CSV_COLUMN_MESSAGE] = e.getMessage(); } context.commitChanges(); } } writer.writeNext(row); }
From source file:org.icgc.dcc.portal.manifest.ManifestServiceTest.java
@Test public void test() throws IOException { val testArchive = temp.newFile(); val timestamp = System.currentTimeMillis(); val repoInclusionList = EMPTY_STRING_LIST; // Creates the test tar.gz archive. try (val output = new FileOutputStream(testArchive)) { val context = new ManifestContext(new Manifest().setTimestamp(timestamp).setFilters(EMPTY_FILTER) .setRepos(repoInclusionList).setFormat(ManifestFormat.TARBALL), output); service.generateManifests(context); }//from w ww . j a v a 2s . com @Cleanup val inputStream = new FileInputStream(testArchive); @Cleanup val tar = new TarArchiveInputStream(new GZIPInputStream(new BufferedInputStream(inputStream))); ArchiveEntry tarEntry; while ((tarEntry = tar.getNextEntry()) != null) { if (tarEntry.isDirectory()) { continue; } val fileName = tarEntry.getName(); val isXml = isXmlFile(fileName); validateFileName(fileName, isXml, timestamp); // Extracts a file from the archive val tempFile = temp.newFile(); try (val output = new FileOutputStream(tempFile)) { IOUtils.copy(tar, output); } if (isXml) { validateXmlFile(tempFile); } else { validateTsvFile(tempFile); } } }
From source file:org.jasig.portal.io.xml.JaxbPortalDataHandlerService.java
/** * Extracts the archive resource and then runs the batch-import process on it. *//*from www .j a va 2s .c o m*/ protected void importDataArchive(final Resource resource, final ArchiveInputStream resourceStream, BatchImportOptions options) { final File tempDir = Files.createTempDir(); try { ArchiveEntry archiveEntry; while ((archiveEntry = resourceStream.getNextEntry()) != null) { final File entryFile = new File(tempDir, archiveEntry.getName()); if (archiveEntry.isDirectory()) { entryFile.mkdirs(); } else { entryFile.getParentFile().mkdirs(); Files.copy(new InputSupplier<InputStream>() { @Override public InputStream getInput() throws IOException { return new CloseShieldInputStream(resourceStream); } }, entryFile); } } importData(tempDir, null, options); } catch (IOException e) { throw new RuntimeException( "Failed to extract data from '" + resource + "' to '" + tempDir + "' for batch import.", e); } finally { FileUtils.deleteQuietly(tempDir); } }
From source file:org.jboss.as.plugin.common.Files.java
/** * Unzips the zip file to the target directory. * * @param zipFile the zip file to unzip * @param targetDir the directory to extract the zip file to * * @throws IOException if an I/O error occurs *///from w ww . j av a 2 s. c om public static void unzip(final File zipFile, final File targetDir) throws IOException { final File file; if (requiresExtraction(zipFile)) { file = extract(zipFile); } else { file = zipFile; } ArchiveInputStream in = null; try { in = new ArchiveStreamFactory() .createArchiveInputStream(new BufferedInputStream(new FileInputStream(file))); final byte[] buff = new byte[1024]; ArchiveEntry entry; while ((entry = in.getNextEntry()) != null) { final File extractTarget = new File(targetDir.getAbsolutePath(), entry.getName()); if (entry.isDirectory()) { extractTarget.mkdirs(); } else { final File parent = new File(extractTarget.getParent()); parent.mkdirs(); BufferedOutputStream out = null; try { out = new BufferedOutputStream(new FileOutputStream(extractTarget)); int read; while ((read = in.read(buff)) != -1) { out.write(buff, 0, read); } } finally { IoUtils.safeClose(out); } } } } catch (ArchiveException e) { throw new IOException(e); } finally { IoUtils.safeClose(in); } }
From source file:org.jboss.qa.jenkins.test.executor.utils.unpack.UnPacker.java
protected static int countRootFolders(Set<? extends ArchiveEntry> entries) { final List<String> fileNames = new ArrayList<>(); for (ArchiveEntry entry : entries) { fileNames.add(entry.getName()); }//from w w w . j a v a2s .co m return countRootFolders(fileNames); }
From source file:org.kaaproject.kaa.server.control.service.sdk.CppSdkGenerator.java
@Override public FileData generateSdk(String buildVersion, List<BootstrapNodeInfo> bootstrapNodes, SdkProfileDto sdkProfile, String profileSchemaBody, String notificationSchemaBody, String configurationProtocolSchemaBody, String configurationBaseSchema, byte[] defaultConfigurationData, List<EventFamilyMetadata> eventFamilies, String logSchemaBody) throws Exception { String sdkToken = sdkProfile.getToken(); Integer configurationSchemaVersion = sdkProfile.getConfigurationSchemaVersion(); final Integer profileSchemaVersion = sdkProfile.getProfileSchemaVersion(); Integer notificationSchemaVersion = sdkProfile.getNotificationSchemaVersion(); Integer logSchemaVersion = sdkProfile.getLogSchemaVersion(); String defaultVerifierToken = sdkProfile.getDefaultVerifierToken(); String sdkTemplateLocation = Environment.getServerHomeDir() + "/" + CPP_SDK_DIR + "/" + CPP_SDK_PREFIX + buildVersion + ".tar.gz"; LOG.debug("Lookup Java SDK template: {}", sdkTemplateLocation); CompressorStreamFactory csf = new CompressorStreamFactory(); ArchiveStreamFactory asf = new ArchiveStreamFactory(); CompressorInputStream cis = csf.createCompressorInputStream(CompressorStreamFactory.GZIP, new FileInputStream(sdkTemplateLocation)); final ArchiveInputStream templateArchive = asf.createArchiveInputStream(ArchiveStreamFactory.TAR, cis); ByteArrayOutputStream sdkOutput = new ByteArrayOutputStream(); CompressorOutputStream cos = csf.createCompressorOutputStream(CompressorStreamFactory.GZIP, sdkOutput); ArchiveOutputStream sdkFile = asf.createArchiveOutputStream(ArchiveStreamFactory.TAR, cos); Map<String, TarEntryData> replacementData = new HashMap<>(); List<TarEntryData> cppSources = new ArrayList<>(); // TODO: remove all version fields and add single sdkToken field // create entry for default properties TarArchiveEntry entry = new TarArchiveEntry(SDK_DEFAULTS_PATH); byte[] data = generateKaaDefaults(bootstrapNodes, sdkToken, defaultConfigurationData, defaultVerifierToken); entry.setSize(data.length);/*from w w w . j a va 2 s . c o m*/ TarEntryData tarEntry = new TarEntryData(entry, data); cppSources.add(tarEntry); Map<String, String> profileVars = new HashMap<>(); profileVars.put(SDK_PROFILE_VERSION_VAR, profileSchemaVersion.toString()); cppSources.addAll(processFeatureSchema(profileSchemaBody, PROFILE_SCHEMA_AVRO_SRC, PROFILE_DEFINITIONS_TEMPLATE, PROFILE_DEFINITIONS_PATH, profileVars)); cppSources.addAll(processFeatureSchema(notificationSchemaBody, NOTIFICATION_SCHEMA_AVRO_SRC, NOTIFICATION_DEFINITIONS_TEMPLATE, NOTIFICATION_DEFINITIONS_PATH, null)); cppSources.addAll(processFeatureSchema(logSchemaBody, LOG_SCHEMA_AVRO_SRC, LOG_DEFINITIONS_TEMPLATE, LOG_DEFINITIONS_PATH, null)); cppSources.addAll(processFeatureSchema(configurationBaseSchema, CONFIGURATION_SCHEMA_AVRO_SRC, CONFIGURATION_DEFINITIONS_TEMPLATE, CONFIGURATION_DEFINITIONS_PATH, null)); if (eventFamilies != null && !eventFamilies.isEmpty()) { cppSources.addAll(CppEventSourcesGenerator.generateEventSources(eventFamilies)); } for (TarEntryData entryData : cppSources) { replacementData.put(entryData.getEntry().getName(), entryData); } ArchiveEntry archiveEntry; while ((archiveEntry = templateArchive.getNextEntry()) != null) { if (!archiveEntry.isDirectory()) { if (replacementData.containsKey(archiveEntry.getName())) { TarEntryData entryData = replacementData.remove(archiveEntry.getName()); sdkFile.putArchiveEntry(entryData.getEntry()); sdkFile.write(entryData.getData()); } else { sdkFile.putArchiveEntry(archiveEntry); IOUtils.copy(templateArchive, sdkFile); } } else { sdkFile.putArchiveEntry(archiveEntry); } sdkFile.closeArchiveEntry(); } templateArchive.close(); for (String entryName : replacementData.keySet()) { TarEntryData entryData = replacementData.get(entryName); sdkFile.putArchiveEntry(entryData.getEntry()); sdkFile.write(entryData.getData()); sdkFile.closeArchiveEntry(); } sdkFile.finish(); sdkFile.close(); String sdkFileName = CPP_SDK_PREFIX + sdkProfile.getToken() + ".tar.gz"; byte[] sdkData = sdkOutput.toByteArray(); FileData sdk = new FileData(); sdk.setFileName(sdkFileName); sdk.setFileData(sdkData); return sdk; }
From source file:org.kaaproject.kaa.server.control.service.sdk.CSdkGenerator.java
@Override public FileData generateSdk(String buildVersion, List<BootstrapNodeInfo> bootstrapNodes, SdkProfileDto sdkProfile, String profileSchemaBody, String notificationSchemaBody, String configurationProtocolSchemaBody, String configurationBaseSchemaBody, byte[] defaultConfigurationData, List<EventFamilyMetadata> eventFamilies, String logSchemaBody) throws Exception { String sdkToken = sdkProfile.getToken(); Integer profileSchemaVersion = sdkProfile.getProfileSchemaVersion(); String defaultVerifierToken = sdkProfile.getDefaultVerifierToken(); String sdkTemplateLocation = Environment.getServerHomeDir() + "/" + C_SDK_DIR + "/" + C_SDK_PREFIX + buildVersion + ".tar.gz"; LOG.debug("Lookup C SDK template: {}", sdkTemplateLocation); CompressorStreamFactory csf = new CompressorStreamFactory(); ArchiveStreamFactory asf = new ArchiveStreamFactory(); CompressorInputStream cis = csf.createCompressorInputStream(CompressorStreamFactory.GZIP, new FileInputStream(sdkTemplateLocation)); final ArchiveInputStream templateArchive = asf.createArchiveInputStream(ArchiveStreamFactory.TAR, cis); ByteArrayOutputStream sdkOutput = new ByteArrayOutputStream(); CompressorOutputStream cos = csf.createCompressorOutputStream(CompressorStreamFactory.GZIP, sdkOutput); ArchiveOutputStream sdkFile = asf.createArchiveOutputStream(ArchiveStreamFactory.TAR, cos); Map<String, TarEntryData> replacementData = new HashMap<>(); List<TarEntryData> sources = new ArrayList<>(); if (!StringUtils.isBlank(profileSchemaBody)) { sources.addAll(generateProfileSources(profileSchemaBody)); }/*from w w w . j a va 2 s. c o m*/ if (!StringUtils.isBlank(logSchemaBody)) { sources.addAll(generateLogSources(logSchemaBody)); } if (!StringUtils.isBlank(configurationBaseSchemaBody)) { sources.addAll(generateConfigurationSources(configurationBaseSchemaBody)); } if (!StringUtils.isBlank(notificationSchemaBody)) { sources.addAll(generateNotificationSources(notificationSchemaBody)); } if (eventFamilies != null && !eventFamilies.isEmpty()) { sources.addAll(CEventSourcesGenerator.generateEventSources(eventFamilies)); } for (TarEntryData entryData : sources) { replacementData.put(entryData.getEntry().getName(), entryData); } ArchiveEntry archiveEntry; while ((archiveEntry = templateArchive.getNextEntry()) != null) { if (!archiveEntry.isDirectory()) { if (archiveEntry.getName().equals(KAA_DEFAULTS_HEADER)) { // TODO: eliminate schema versions and substitute them for a single sdkToken byte[] kaaDefaultsData = generateKaaDefaults(bootstrapNodes, sdkToken, profileSchemaVersion, configurationProtocolSchemaBody, defaultConfigurationData, defaultVerifierToken); TarArchiveEntry kaaDefaultsEntry = new TarArchiveEntry(KAA_DEFAULTS_HEADER); kaaDefaultsEntry.setSize(kaaDefaultsData.length); sdkFile.putArchiveEntry(kaaDefaultsEntry); sdkFile.write(kaaDefaultsData); } else if (archiveEntry.getName().equals(KAA_CMAKEGEN)) { // Ignore duplicate source names List<String> sourceNames = new LinkedList<>(); for (TarEntryData sourceEntry : sources) { String fileName = sourceEntry.getEntry().getName(); if (fileName.endsWith(C_SOURCE_SUFFIX) && !sourceNames.contains(fileName)) { sourceNames.add(fileName); } } VelocityContext context = new VelocityContext(); context.put("sourceNames", sourceNames); String sourceData = generateSourceFromTemplate(TEMPLATE_DIR + File.separator + "CMakeGen.vm", context); TarArchiveEntry kaaCMakeEntry = new TarArchiveEntry(KAA_CMAKEGEN); kaaCMakeEntry.setSize(sourceData.length()); sdkFile.putArchiveEntry(kaaCMakeEntry); sdkFile.write(sourceData.getBytes()); } else if (replacementData.containsKey(archiveEntry.getName())) { TarEntryData entryData = replacementData.remove(archiveEntry.getName()); sdkFile.putArchiveEntry(entryData.getEntry()); sdkFile.write(entryData.getData()); } else { sdkFile.putArchiveEntry(archiveEntry); IOUtils.copy(templateArchive, sdkFile); } } else { sdkFile.putArchiveEntry(archiveEntry); } sdkFile.closeArchiveEntry(); } templateArchive.close(); for (String entryName : replacementData.keySet()) { TarEntryData entryData = replacementData.get(entryName); sdkFile.putArchiveEntry(entryData.getEntry()); sdkFile.write(entryData.getData()); sdkFile.closeArchiveEntry(); } sdkFile.finish(); sdkFile.close(); String sdkFileName = C_SDK_PREFIX + sdkProfile.getToken() + ".tar.gz"; FileData sdk = new FileData(); sdk.setFileName(sdkFileName); sdk.setFileData(sdkOutput.toByteArray()); return sdk; }
From source file:org.kaaproject.kaa.server.control.service.sdk.ObjCSdkGenerator.java
@Override public FileData generateSdk(String buildVersion, List<BootstrapNodeInfo> bootstrapNodes, SdkProfileDto sdkProperties, String profileSchemaBody, String notificationSchemaBody, String configurationProtocolSchemaBody, String configurationBaseSchemaBody, byte[] defaultConfigurationData, List<EventFamilyMetadata> eventFamilies, String logSchemaBody) throws Exception { final String sdkToken = sdkProperties.getToken(); final String defaultVerifierToken = sdkProperties.getDefaultVerifierToken(); String sdkTemplateLocation = System.getProperty("server_home_dir") + "/" + SDK_TEMPLATE_DIR + SDK_PREFIX + buildVersion + ".tar.gz"; LOG.debug("Lookup Objective C SDK template: {}", sdkTemplateLocation); CompressorStreamFactory csf = new CompressorStreamFactory(); ArchiveStreamFactory asf = new ArchiveStreamFactory(); CompressorInputStream cis = csf.createCompressorInputStream(CompressorStreamFactory.GZIP, new FileInputStream(sdkTemplateLocation)); final ArchiveInputStream templateArchive = asf.createArchiveInputStream(ArchiveStreamFactory.TAR, cis); ByteArrayOutputStream sdkOutput = new ByteArrayOutputStream(); CompressorOutputStream cos = csf.createCompressorOutputStream(CompressorStreamFactory.GZIP, sdkOutput); ArchiveOutputStream sdkFile = asf.createArchiveOutputStream(ArchiveStreamFactory.TAR, cos); Map<String, TarEntryData> replacementData = new HashMap<>(); List<TarEntryData> objcSources = new ArrayList<>(); if (StringUtils.isNotBlank(profileSchemaBody)) { LOG.debug("Generating profile schema"); Schema profileSchema = new Schema.Parser().parse(profileSchemaBody); String profileClassName = PROFILE_NAMESPACE + profileSchema.getName(); String profileCommonHeader = readResource(PROFILE_TEMPLATE_DIR + PROFILE_COMMON + _H + TEMPLATE_SUFFIX) .replaceAll(PROFILE_CLASS_VAR, profileClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(profileCommonHeader, KAA_ROOT + PROFILE_DIR + PROFILE_COMMON + _H)); String profileCommonSource = readResource(PROFILE_TEMPLATE_DIR + PROFILE_COMMON + _M + TEMPLATE_SUFFIX) .replaceAll(PROFILE_CLASS_VAR, profileClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(profileCommonSource, KAA_ROOT + PROFILE_DIR + PROFILE_COMMON + _M)); objcSources.addAll(generateSourcesFromSchema(profileSchema, PROFILE_GEN, PROFILE_NAMESPACE)); }//from ww w . j a v a 2 s . co m String logClassName = ""; if (StringUtils.isNotBlank(logSchemaBody)) { LOG.debug("Generating log schema"); Schema logSchema = new Schema.Parser().parse(logSchemaBody); logClassName = LOGGING_NAMESPACE + logSchema.getName(); String logRecordHeader = readResource(LOG_TEMPLATE_DIR + LOG_RECORD + _H + TEMPLATE_SUFFIX) .replaceAll(LOG_RECORD_CLASS_VAR, logClassName); objcSources .add(CommonSdkUtil.tarEntryForSources(logRecordHeader, KAA_ROOT + LOG_DIR + LOG_RECORD + _H)); String logRecordSource = readResource(LOG_TEMPLATE_DIR + LOG_RECORD + _M + TEMPLATE_SUFFIX) .replaceAll(LOG_RECORD_CLASS_VAR, logClassName); objcSources .add(CommonSdkUtil.tarEntryForSources(logRecordSource, KAA_ROOT + LOG_DIR + LOG_RECORD + _M)); String logCollector = readResource(LOG_TEMPLATE_DIR + LOG_COLLECTOR_INTERFACE + TEMPLATE_SUFFIX) .replaceAll(LOG_RECORD_CLASS_VAR, logClassName); objcSources.add( CommonSdkUtil.tarEntryForSources(logCollector, KAA_ROOT + LOG_DIR + LOG_COLLECTOR_INTERFACE)); String logCollectorImplHeader = readResource( LOG_TEMPLATE_DIR + LOG_COLLECTOR_SOURCE + _H + TEMPLATE_SUFFIX).replaceAll(LOG_RECORD_CLASS_VAR, logClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(logCollectorImplHeader, KAA_ROOT + LOG_DIR + LOG_COLLECTOR_SOURCE + _H)); String logCollectorImplSource = readResource( LOG_TEMPLATE_DIR + LOG_COLLECTOR_SOURCE + _M + TEMPLATE_SUFFIX).replaceAll(LOG_RECORD_CLASS_VAR, logClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(logCollectorImplSource, KAA_ROOT + LOG_DIR + LOG_COLLECTOR_SOURCE + _M)); objcSources.addAll(generateSourcesFromSchema(logSchema, LOG_GEN, LOGGING_NAMESPACE)); } String configurationClassName = ""; if (StringUtils.isNotBlank(configurationBaseSchemaBody)) { LOG.debug("Generating configuration schema"); Schema configurationSchema = new Schema.Parser().parse(configurationBaseSchemaBody); configurationClassName = CONFIGURATION_NAMESPACE + configurationSchema.getName(); String configurationCommon = readResource( CONFIGURATION_TEMPLATE_DIR + CONFIGURATION_COMMON + TEMPLATE_SUFFIX) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(configurationCommon, KAA_ROOT + CONFIGURATION_DIR + CONFIGURATION_COMMON)); String cfManagerImplHeader = readResource( CONFIGURATION_TEMPLATE_DIR + CONFIGURATION_MANAGER_IMPL + _H + TEMPLATE_SUFFIX) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(cfManagerImplHeader, KAA_ROOT + CONFIGURATION_DIR + CONFIGURATION_MANAGER_IMPL + _H)); String cfManagerImplSource = readResource( CONFIGURATION_TEMPLATE_DIR + CONFIGURATION_MANAGER_IMPL + _M + TEMPLATE_SUFFIX) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(cfManagerImplSource, KAA_ROOT + CONFIGURATION_DIR + CONFIGURATION_MANAGER_IMPL + _M)); String cfDeserializerHeader = readResource( CONFIGURATION_TEMPLATE_DIR + CONFIGURATION_DESERIALIZER + _H + TEMPLATE_SUFFIX) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(cfDeserializerHeader, KAA_ROOT + CONFIGURATION_DIR + CONFIGURATION_DESERIALIZER + _H)); String cfDeserializerSource = readResource( CONFIGURATION_TEMPLATE_DIR + CONFIGURATION_DESERIALIZER + _M + TEMPLATE_SUFFIX) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(cfDeserializerSource, KAA_ROOT + CONFIGURATION_DIR + CONFIGURATION_DESERIALIZER + _M)); objcSources.addAll( generateSourcesFromSchema(configurationSchema, CONFIGURATION_GEN, CONFIGURATION_NAMESPACE)); } if (StringUtils.isNotBlank(notificationSchemaBody)) { LOG.debug("Generating notification schema"); Schema notificationSchema = new Schema.Parser().parse(notificationSchemaBody); String notificationClassName = NOTIFICATION_NAMESPACE + notificationSchema.getName(); String nfCommonHeader = readResource( NOTIFICATION_TEMPLATE_DIR + NOTIFICATION_COMMON + _H + TEMPLATE_SUFFIX) .replaceAll(NOTIFICATION_CLASS_VAR, notificationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(nfCommonHeader, KAA_ROOT + NOTIFICATION_DIR + NOTIFICATION_COMMON + _H)); String nfCommonSource = readResource( NOTIFICATION_TEMPLATE_DIR + NOTIFICATION_COMMON + _M + TEMPLATE_SUFFIX) .replaceAll(NOTIFICATION_CLASS_VAR, notificationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(nfCommonSource, KAA_ROOT + NOTIFICATION_DIR + NOTIFICATION_COMMON + _M)); objcSources.addAll( generateSourcesFromSchema(notificationSchema, NOTIFICATION_GEN, NOTIFICATION_NAMESPACE)); } if (eventFamilies != null && !eventFamilies.isEmpty()) { objcSources.addAll(ObjCEventClassesGenerator.generateEventSources(eventFamilies)); } String kaaClient = readResource(SDK_TEMPLATE_DIR + KAA_CLIENT + TEMPLATE_SUFFIX) .replaceAll(LOG_RECORD_CLASS_VAR, logClassName) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(kaaClient, KAA_ROOT + KAA_CLIENT)); String baseKaaClientHeader = readResource(SDK_TEMPLATE_DIR + BASE_KAA_CLIENT + _H + TEMPLATE_SUFFIX) .replaceAll(LOG_RECORD_CLASS_VAR, logClassName) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(baseKaaClientHeader, KAA_ROOT + BASE_KAA_CLIENT + _H)); String baseKaaClientSource = readResource(SDK_TEMPLATE_DIR + BASE_KAA_CLIENT + _M + TEMPLATE_SUFFIX) .replaceAll(LOG_RECORD_CLASS_VAR, logClassName) .replaceAll(CONFIGURATION_CLASS_VAR, configurationClassName); objcSources.add(CommonSdkUtil.tarEntryForSources(baseKaaClientSource, KAA_ROOT + BASE_KAA_CLIENT + _M)); String tokenVerifier = defaultVerifierToken == null ? "nil" : "@\"" + defaultVerifierToken + "\""; String tokenVerifierSource = readResource(EVENT_TEMPLATE_DIR + USER_VERIFIER_CONSTANTS + TEMPLATE_SUFFIX) .replaceAll(DEFAULT_USER_VERIFIER_TOKEN_VAR, tokenVerifier); objcSources.add(CommonSdkUtil.tarEntryForSources(tokenVerifierSource, KAA_ROOT + EVENT_DIR + USER_VERIFIER_CONSTANTS)); String kaaDefaultsTemplate = readResource(SDK_TEMPLATE_DIR + KAA_DEFAULTS + TEMPLATE_SUFFIX); objcSources.add(generateKaaDefaults(kaaDefaultsTemplate, bootstrapNodes, sdkToken, configurationProtocolSchemaBody, defaultConfigurationData, sdkProperties)); for (TarEntryData entryData : objcSources) { replacementData.put(entryData.getEntry().getName(), entryData); } ArchiveEntry archiveEntry; while ((archiveEntry = templateArchive.getNextEntry()) != null) { if (!archiveEntry.isDirectory()) { if (replacementData.containsKey(archiveEntry.getName())) { TarEntryData entryData = replacementData.remove(archiveEntry.getName()); sdkFile.putArchiveEntry(entryData.getEntry()); sdkFile.write(entryData.getData()); } else { sdkFile.putArchiveEntry(archiveEntry); IOUtils.copy(templateArchive, sdkFile); } } else { sdkFile.putArchiveEntry(archiveEntry); } sdkFile.closeArchiveEntry(); } templateArchive.close(); for (String entryName : replacementData.keySet()) { TarEntryData entryData = replacementData.get(entryName); sdkFile.putArchiveEntry(entryData.getEntry()); sdkFile.write(entryData.getData()); sdkFile.closeArchiveEntry(); } sdkFile.finish(); sdkFile.close(); String sdkFileName = SDK_PREFIX + sdkProperties.getToken() + ".tar.gz"; byte[] sdkData = sdkOutput.toByteArray(); FileData sdk = new FileData(); sdk.setFileName(sdkFileName); sdk.setFileData(sdkData); return sdk; }