// -----------------------------------------------------------------------------
//
//   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.
//
// $Id: rasterizer.bin.policy 476799 2006-11-19 11:33:41Z cam $
// -----------------------------------------------------------------------------

grant codeBase "${app.jar.base}/xml-apis-ext-${xmlapis.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xml-apis-${xmlapis.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xalan-${xalan.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xercesImpl-2.9.1.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/../batik-rasterizer-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-svgrasterizer-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-ext-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-dom-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-css-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-svg-dom-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-gvt-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-parser-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-script-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-bridge-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-swing-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-transcoder-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-gui-util-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-awt-util-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-util-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-xml-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/fop-transcoder-allinone-${xmlgraphics.fop.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/xmlgraphics-commons-${xmlgraphics.commons.version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-anim-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-codec-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-extension-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/batik-svggen-${version}.jar" {
  permission java.security.AllPermission;
};

grant codeBase "${app.jar.base}/js.jar" {
  permission java.lang.RuntimePermission "createClassLoader";
  permission java.net.SocketPermission "*", "listen, connect, resolve, accept";
  permission java.lang.RuntimePermission "accessDeclaredMembers";
  permission java.util.PropertyPermission "org.mozilla.javascript.JavaAdapter", "read";
  permission java.util.PropertyPermission "org.mozilla.javascript.JavaAdapterClassName", "read";
  permission java.io.FilePermission "<<ALL FILES>>", "read";
};

grant {
 permission java.io.FilePermission  "${app.jar.base}/batik-svg-dom-${version}.jar", "read";
};

