blob: a5f0fa97e59ac86235fafffc8ffba9a40f6ea6f9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Sybase, Inc. and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http:// www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Sybase, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.pagedesigner.jsf.ui.converter.jsfcore;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.PropertyResourceBundle;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jst.jsf.common.ui.IFileFolderConstants;
import org.eclipse.jst.jsf.common.ui.internal.logging.Logger;
import org.eclipse.jst.jsf.common.ui.internal.utils.ResourceUtils;
import org.eclipse.jst.jsf.core.internal.tld.IJSFConstants;
import org.eclipse.jst.pagedesigner.PDPlugin;
import org.eclipse.jst.pagedesigner.converter.HiddenTagConverter;
import org.eclipse.jst.pagedesigner.utils.PreviewUtil;
import org.eclipse.jst.pagedesigner.utils.StructuredModelUtil;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode;
import org.w3c.dom.Element;
/**
* @author mengbo
* @deprecated Use DTTagConverter meta-data instead
*/
public class LoadBundleTagConverter extends HiddenTagConverter
{
private static Logger _log = PDPlugin.getLogger(LoadBundleTagConverter.class);
/**
* @param host
* @param labelProvider
*/
public LoadBundleTagConverter(Element host, ILabelProvider labelProvider)
{
super(host, labelProvider);
}
/* (non-Javadoc)
* @see org.eclipse.jst.pagedesigner.converter.ITagConverter#convertRefresh(java.lang.Object)
*/
public void convertRefresh(Object context)
{
Element hostEle = getHostElement();
String varString = hostEle.getAttribute(IJSFConstants.ATTR_VAR);
String baseName = hostEle.getAttribute(IJSFConstants.ATTR_BASENAME);
if (baseName == null || varString == null)
{
return;
}
baseName = baseName.replace('.', '/') + IFileFolderConstants.DOT + IFileFolderConstants.EXT_PROPERTIES;
IProject project = null;
if (hostEle instanceof IDOMNode)
{
IDOMModel model = ((IDOMNode) hostEle).getModel();
if (model != null)
{
project = StructuredModelUtil.getProjectFor(model);
}
}
if (project == null)
{
return;
}
String prop = (new StringBuffer("webroot") //$NON-NLS-1$
.append(IFileFolderConstants.PATH_SEPARATOR).append(IFileFolderConstants.FOLDER_WEBINF).append(
IFileFolderConstants.PATH_SEPARATOR).append(IFileFolderConstants.FOLDER_CLASS).append(
IFileFolderConstants.PATH_SEPARATOR).append(baseName)).toString();
IResource res = project.findMember(prop);
if (res == null)
{
prop = IFileFolderConstants.FOLDER_SOURCE + IFileFolderConstants.PATH_SEPARATOR + baseName;
res = project.findMember(prop);
if (res == null)
{
return;
}
}
InputStream ins = null;
try
{
File f = new File(res.getLocation().toString());
ins = new FileInputStream(f);
if (ins != null)
{
ins = new BufferedInputStream(ins);
PropertyResourceBundle bundle = new PropertyResourceBundle(ins);
if (bundle != null)
{
if (PreviewUtil.getBUNDLE_MAP() == null)
{
PreviewUtil.setBUNDLE_MAP(new HashMap());
}
else
{
PreviewUtil.getBUNDLE_MAP().clear();
}
PreviewUtil.getBUNDLE_MAP().put(varString, bundle);
PreviewUtil.setBUNDLE(bundle);
PreviewUtil.setVAR(varString);
}
}
}
catch (MalformedURLException e)
{
_log.error("LoadBundleTagConverter.convertRefresh.MalformedURLException", e); //$NON-NLS-1$
return;
}
catch (IOException e)
{
_log.error("LoadBundleTagConverter.convertRefresh.IOException", e); //$NON-NLS-1$
return;
}
finally
{
ResourceUtils.ensureClosed(ins);
}
return;
}
}