Yapılandırma Yükleyicileri

Yükleme işleminden başlayarak yapılandırmanın nasıl çalıştığını çözelim. Yapınlandırma şunları içerir ConfigurationLoaders genel yapılandırma ayarları için, fiziksel yapılandırma dosya yöneticisi olarak bulunur, kaydetmek ve verilen kaynak verileri yüklemeye izin verir. Ayrıca, varsayılan değerleri sabit kodlama veya önceden yazılmış bir dosyadan yükleme seçeneği sunarak boş yapılandırmaları yüklemenize izin verir.

Yükleyici alınıyor

Not

Varsayılan olarak HOCON kullanıyorsanız bunun yerine ConfigurationLoader kullanılabilirsiniz; ayrıca bakın ana yapılandırma sayfası.

İlk olarak, yapılandırma dosyasını gösteren yeni bir ConfigurationLoader ele alalım.

import java.nio.file.Path;
import ninja.leaping.configurate.commented.CommentedConfigurationNode;
import ninja.leaping.configurate.hocon.HoconConfigurationLoader;
import ninja.leaping.configurate.loader.ConfigurationLoader;

Path potentialFile = getConfigPath();
ConfigurationLoader<CommentedConfigurationNode> loader =
  HoconConfigurationLoader.builder().setPath(potentialFile).build();

Yükleyici, hangi düğüm oluşturacağına bağlı olarak genel bir tür de tutacaktır. Bu * Yapılandırma Düğümleri * bir sonraki bölümde tartışılacaktır.

`` ConfigurationLoader`` s genellikle direk eriştiğiniz ve istediğiniz türdeki yükleyicinin yeni bir örneğini oluşturmak için bulunan bir oluşturucudur. Basit bir yapılandırma için, yüklemek ve / veya kaydetmek istediğimiz dosyadan başka bir şeyi belirtmek zorunda değiliz, bu yüzden yapacağımız tek şey HoconConfigurationLoader.builder().setPath(path)``kullanılacağını belirtmek. Daha sonra geliştiriciye bunun örneğini inşa etmesini (``build()) ve bir değişkene depolamasını söyleriz.

Elbette, bir dosyayı yüklemenin tek yolu bu değildir. Oluşturucuda Path nesne kullanmadan kaynak yüklemek istediğiniz zaman setURL(URL)``yöntemi vardır. Bir ``URL den oluşturulan yapılandırma yükleyicilerinin, URL’ye veri yazmanın hiçbir yolu olmadığı zaman kabul edilebilir olduğunu unutmayın.

Bu işlevsellik, eklenti Jar dosyasıyla varsayılan yapılandırmaları paketlemek ve sunucu yöneticisi tarafından düzenlenecek ilk yapılandırma olarak yüklemek için kullanılabilir (ya da eklentinizin kendisi).

Yükleme ve kaydetme

ConfigurationLoader edindikten sonra bunu createEmptyNode () yöntemini kullanarak boş bir ConfigurationNode elde etmek için kullanabilirsiniz.

import ninja.leaping.configurate.ConfigurationNode;
import ninja.leaping.configurate.ConfigurationOptions;

Path potentialFile = getConfigPath();
ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setPath(potentialFile).build();
ConfigurationNode rootNode = loader.createEmptyNode(ConfigurationOptions.defaults());

Bu yöntem`ninja.leaping.configurate.ConfigurationOptions` parametresinin kullanılmasını beklemektedir. Özel tür seri hale getirme gibi özellikleri kullanmak istemiyorsanız, varsayılan değerleri içeren bir seçenek nesnesi oluşturmak için ConfigurationOptions#defaults() işlevini kullanabilirsiniz.

load() yöntemini kullanarak, yapılandırma içeriği ConfigurationLoader oluşturulduğunda, belirtilen kaynaktan yüklemeyi deneyebilirsiniz. Aynı zamanda ConfigurationLoader örneğini beklemekle birlikte, ayrıca load(ConfigurationOptions.defaults()) değişken olmayan bir form da sağlar.

import java.io.IOException;

Path potentialFile = getConfigPath();
ConfigurationLoader<CommentedConfigurationNode> loader = HoconConfigurationLoader.builder().setPath(potentialFile).build();
ConfigurationNode rootNode;
try {
    rootNode = loader.load();
} catch(IOException e) {
    // error
}

Belirtilen Path mevcut değilse, load () yöntemi boş bir ConfigurationNode``oluşturur. Başka herhangi bir hata, düzgün bir şekilde ele alınması gereken bir ``IOException atılmasına neden olacaktır.

Varsayılan yükleyiciyi ekletiyseniz, çok sayıda Sponge nesnesini seri hale getirme ve serileştirme yeteneği içerdiğinden, ``ConfigurationOptions``dosyasını edinmek iyi bir fikirdir.

Kaydedilmeyi istediğiniz verileri tutmak için ConfigurationNode``u değiştirdikten sonra, düğümü yükleyiciyi oluştururken belirtilen dosyaya kaydetmek için ``ConfigurationLoader kullanabilirsiniz. Bu dosya mevcut değilse oluşturulur. Varsa, tüm içerikler üzerine yazılır.

try {
    loader.save(rootNode);
} catch(IOException e) {
    // error
}

Yine, hatalar bir ``IOException``olarak belirir ve ele alınması gerekir.

Örnek: Eklenti jar dosyasından varsayılan bir yapılandırma yükleniyor

import java.net.URL;

URL jarConfigFile = Sponge.getAssetManager().getAsset("defaultConfig.conf").get().getUrl();
ConfigurationLoader<CommentedConfigurationNode> loader =
  HoconConfigurationLoader.builder().setURL(jarConfigFile).build();

Bu örnek için dikkat edilmesi gereken önemli nokta AssetManager#getAsset(String) yöntemi, eklentinin varlık klasörüne göre çalışır. Yukarıdaki örnekte, eklenti kimliği myplugin``ise, ``defaultConfig.conf dosyası, jar dosyasında değil, assets/myplugin dizininde olmalıdır. Daha fazla bilgi için Varlık API sayfasına bakın.