1 /* 2 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package jdk.incubator.jpackage.internal; 27 28 import java.io.File; 29 import java.nio.file.Path; 30 import java.util.*; 31 import java.util.stream.Collectors; 32 import static jdk.incubator.jpackage.internal.StandardBundlerParam.*; 33 34 final class FileAssociation { 35 void verify() { 36 if (extensions.isEmpty()) { 37 Log.error(I18N.getString( 38 "message.creating-association-with-null-extension")); 39 } 40 } 41 42 static List<FileAssociation> fetchFrom(Map<String, ? super Object> params) { 43 String launcherName = APP_NAME.fetchFrom(params); 44 45 return FILE_ASSOCIATIONS.fetchFrom(params).stream().filter( 46 Objects::nonNull).map(fa -> { 47 FileAssociation assoc = new FileAssociation(); 48 49 assoc.launcherPath = Path.of(launcherName); 50 assoc.description = FA_DESCRIPTION.fetchFrom(fa); 51 assoc.extensions = Optional.ofNullable( 52 FA_EXTENSIONS.fetchFrom(fa)).orElse(Collections.emptyList()); 53 assoc.mimeTypes = Optional.ofNullable( 54 FA_CONTENT_TYPE.fetchFrom(fa)).orElse(Collections.emptyList()); 55 56 File icon = FA_ICON.fetchFrom(fa); 57 if (icon != null) { 58 assoc.iconPath = icon.toPath(); 59 } 60 61 return assoc; 62 }).collect(Collectors.toList()); 63 } 64 65 Path launcherPath; 66 Path iconPath; 67 List<String> mimeTypes; 68 List<String> extensions; 69 String description; 70 }