blob: 13dc6e0c1765cf82a47f0f437bc62709ec27bbef [file] [log] [blame]
/*
* 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.river.container;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.FileSystemException;
import org.apache.commons.vfs2.FileType;
/**
*
* @author trasukg
*/
public class PropertiesFileReader {
private static final Logger log=
Logger.getLogger(PropertiesFileReader.class.getName(),
MessageNames.BUNDLE_NAME);
@Injected(style=InjectionStyle.BY_TYPE)
Context context = null;
@Injected
FileUtility fileUtility = null;
@Init
public void initialize() {
try {
FileObject[] childFiles = fileUtility.getProfileDirectory().getChildren();
for (FileObject fo: childFiles) {
if (fo.getName().getBaseName().endsWith(Strings.DOT_PROPERTIES)
&& fo.getType()==FileType.FILE) {
readPropertiesFile(fo);
}
}
} catch (Exception ex) {
throw new LocalizedRuntimeException(ex,
MessageNames.BUNDLE_NAME, MessageNames.FAILED_READ_PROPERTIES);
}
}
private void readPropertiesFile(FileObject fo) throws FileSystemException, IOException {
String name=fo.getName().getBaseName();
Properties props = getProperties(fo);
context.put(name, props);
log.log(Level.FINE, MessageNames.READ_PROPERTIES_FILE,name);
if (log.isLoggable(Level.FINER)) {
log.log(Level.FINER, MessageNames.READ_PROPERTIES,
Utils.format(props));
}
}
public Properties getProperties(FileObject fo) throws FileSystemException, IOException {
InputStream is=fo.getContent().getInputStream();
Properties props=new Properties();
props.load(is);
return props;
}
}