| 1 19 20 23 24 package org.netbeans.modules.j2ee.sun.ws7.serverresources.beans; 25 26 27 28 import java.io.PrintWriter ; 29 import java.io.OutputStreamWriter ; 30 import java.io.File ; 31 import java.io.FileInputStream ; 32 33 import java.util.Map ; 34 import java.util.List ; 35 import java.util.Vector ; 36 import java.util.ArrayList ; 37 import java.util.Properties ; 38 import java.util.HashMap ; 39 import java.text.MessageFormat ; 40 import java.util.ResourceBundle ; 41 42 import javax.management.Attribute ; 43 import javax.management.ObjectName ; 44 import javax.management.AttributeList ; 45 import org.netbeans.api.project.FileOwnerQuery; 46 import org.netbeans.api.project.Project; 47 import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; 48 import org.netbeans.modules.j2ee.sun.api.SunURIManager; 49 50 import org.openide.util.NbBundle; 51 import org.openide.ErrorManager; 52 53 import org.openide.nodes.Node; 54 import org.openide.nodes.Node.Cookie; 55 import org.openide.nodes.Node.Property; 56 import org.openide.cookies.SaveCookie; 57 58 import org.openide.filesystems.FileLock; 59 import org.openide.filesystems.FileUtil; 60 import org.openide.filesystems.FileObject; 61 import org.openide.filesystems.FileSystem; 62 import org.openide.filesystems.FileAlreadyLockedException; 63 64 import javax.enterprise.deploy.spi.DeploymentManager ; 65 66 import org.netbeans.modules.j2ee.sun.ide.editors.NameValuePair; 67 68 import org.netbeans.modules.j2ee.sun.ws7.serverresources.wizards.WS70WizardConstants; 69 import org.netbeans.modules.j2ee.sun.ide.editors.IsolationLevelEditor; 70 71 import org.netbeans.modules.j2ee.sun.ws7.serverresources.wizards.ResourceConfigData; 72 import org.netbeans.modules.j2ee.sun.ws7.serverresources.dd.*; 73 import org.netbeans.modules.j2ee.sun.ws7.dm.WS70SunDeploymentManager; 74 import org.netbeans.modules.j2ee.sun.ws7.j2ee.ResourceType; 75 import org.netbeans.modules.j2ee.sun.ws7.ui.Util; 76 77 import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; 78 79 80 81 85 public class WS70ResourceUtils implements WS70WizardConstants{ 86 87 static final ResourceBundle bundle = ResourceBundle.getBundle("org.netbeans.modules.j2ee.sun.ws7.serverresources.beans.Bundle"); private static String MAIL_PROP_PREFIX="mail."; 90 93 public WS70ResourceUtils() { 94 } 95 96 public static void saveNodeToXml(FileObject resFile, WS70Resources res){ 97 try { 98 res.write(FileUtil.toFile(resFile)); 99 }catch(Exception ex){ 100 ErrorManager.getDefault().notify(ErrorManager.WARNING, ex); 101 } 102 } 103 public static void registerResource(WS70Resources resources, String resourceType, String config, 104 WS70SunDeploymentManager dm) throws Exception { 105 boolean added = false; 106 String jndiName = null; 107 if(resourceType==WS70WizardConstants.__MailResource){ 108 WS70MailResource mailres = resources.getWS70MailResource(0); 109 HashMap attrMap = new HashMap (); 110 jndiName = mailres.getJndiName(); 111 ArrayList mailresProps = new ArrayList (); 113 mailresProps.add(MAIL_PROP_PREFIX+WS70WizardConstants.__Host+"="+mailres.getHost()); 114 mailresProps.add(MAIL_PROP_PREFIX+WS70WizardConstants.__MailUser+"="+mailres.getUser()); 115 mailresProps.add(MAIL_PROP_PREFIX+WS70WizardConstants.__From+"="+mailres.getFrom()); 116 mailresProps.add(WS70WizardConstants.__StoreProtocol+"="+ mailres.getStoreProtocol()); 117 mailresProps.add(WS70WizardConstants.__StoreProtocolClass+"="+ mailres.getStoreProtocolClass()); 118 mailresProps.add(WS70WizardConstants.__TransportProtocol+"="+ mailres.getTransportProtocol()); 119 mailresProps.add(WS70WizardConstants.__TransportProtocolClass+"="+ mailres.getTransportProtocolClass()); 120 121 130 attrMap.put(WS70WizardConstants.__Enabled, mailres.getEnabled()); 132 attrMap.put(WS70WizardConstants.__Description, mailres.getDescription()); 133 134 if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.MAIL, dm)){ 135 ErrorManager.getDefault().log(ErrorManager.USER, 136 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName)); 137 dm.addMailResource(config, jndiName, attrMap); 138 added = true; 139 }else{ 140 ErrorManager.getDefault().log(ErrorManager.USER, 141 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName)); 142 dm.setResource(ResourceType.MAIL, config, jndiName, attrMap, false); 143 } 144 dm.setUserResourceProp(config, WS70WizardConstants.__MailResource, jndiName, "property", mailresProps, false); 146 ErrorManager.getDefault().log(ErrorManager.USER, 148 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig")); 149 150 dm.deployAndReconfig(config); 151 }else if(resourceType==WS70WizardConstants.__CustomResource){ 152 WS70CustomResource customres = resources.getWS70CustomResource(0); 153 HashMap attrMap = new HashMap (); 154 jndiName = customres.getJndiName(); 155 attrMap.put(WS70WizardConstants.__ResType, customres.getResType()); 156 attrMap.put(WS70WizardConstants.__FactoryClass, customres.getFactoryClass()); 157 attrMap.put(WS70WizardConstants.__Enabled, customres.getEnabled()); 158 attrMap.put(WS70WizardConstants.__Description, customres.getDescription()); 159 List props = getExtraProperties(customres.getPropertyElement()); 160 if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.CUSTOM, dm)){ 161 ErrorManager.getDefault().log(ErrorManager.USER, 162 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName)); 163 164 dm.addCustomResource(config, jndiName, attrMap); 165 added = true; 166 }else{ 167 ErrorManager.getDefault().log(ErrorManager.USER, 168 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName)); 169 170 dm.setResource(ResourceType.CUSTOM, config, jndiName, attrMap, false); 171 } 172 dm.setUserResourceProp(config, WS70WizardConstants.__CustomResource, jndiName, "property", props, false); 173 ErrorManager.getDefault().log(ErrorManager.USER, 174 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig")); 175 176 dm.deployAndReconfig(config); 177 }else if(resourceType==WS70WizardConstants.__ExternalJndiResource){ 178 WS70ExternalJndiResource extres = resources.getWS70ExternalJndiResource(0); 179 HashMap attrMap = new HashMap (); 180 jndiName = extres.getJndiName(); 181 attrMap.put(WS70WizardConstants.__ExternalJndiName, extres.getExternalJndiName()); 182 attrMap.put(WS70WizardConstants.__ResType, extres.getResType()); 183 attrMap.put(WS70WizardConstants.__FactoryClass, extres.getFactoryClass()); 184 attrMap.put(WS70WizardConstants.__Enabled, extres.getEnabled()); 185 attrMap.put(WS70WizardConstants.__Description, extres.getDescription()); 186 List props = getExtraProperties(extres.getPropertyElement()); 187 if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.JNDI, dm)){ 188 ErrorManager.getDefault().log(ErrorManager.USER, 189 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName)); 190 191 dm.addJNDIResource(config, jndiName, attrMap); 192 added = true; 193 }else{ 194 ErrorManager.getDefault().log(ErrorManager.USER, 195 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName)); 196 197 dm.setResource(ResourceType.JNDI, config, jndiName, attrMap, false); 198 } 199 dm.setUserResourceProp(config, WS70WizardConstants.__ExternalJndiResource, jndiName, "property", props, false); 200 ErrorManager.getDefault().log(ErrorManager.USER, 201 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig")); 202 203 dm.deployAndReconfig(config); 204 }else if(resourceType==WS70WizardConstants.__JdbcResource){ 205 WS70JdbcResource jdbcres = resources.getWS70JdbcResource(0); 206 HashMap attrMap = new HashMap (); 207 jndiName = jdbcres.getJndiName(); 208 attrMap.put(__DatasourceClassname, jdbcres.getDatasourceClass()); 209 attrMap.put(__MinConnections, jdbcres.getMinConnections()); 210 attrMap.put(__MaxConnections, jdbcres.getMaxConnections()); 211 attrMap.put(__IdleTimeout, jdbcres.getIdleTimeout()); 212 attrMap.put(__WaitTimeout, jdbcres.getWaitTimeout()); 213 attrMap.put(__IsolationLevel, jdbcres.getIsolationLevel()); 214 attrMap.put(__IsolationLevelGuaranteed, jdbcres.getIsolationLevelGuaranteed()); 215 attrMap.put(__ConnectionValidation, jdbcres.getConnectionValidation()); 216 attrMap.put(__ConnectionValidationTableName, jdbcres.getConnectionValidationTableName()); 217 attrMap.put(__FailAllConnections, jdbcres.getFailAllConnections()); 218 attrMap.put(WS70WizardConstants.__Enabled, jdbcres.getEnabled()); 219 attrMap.put(WS70WizardConstants.__Description, jdbcres.getDescription()); 220 List props = getExtraProperties(jdbcres.getPropertyElement()); 221 if(!isAlreadyRegisterdResource(jndiName, config, ResourceType.JDBC, dm)){ 222 ErrorManager.getDefault().log(ErrorManager.USER, 223 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Registering_Resource", jndiName)); 224 225 dm.addJdbcResource(config, jndiName, attrMap); 226 added = true; 227 }else{ 228 ErrorManager.getDefault().log(ErrorManager.USER, 229 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Updating_Resource", jndiName)); 230 231 dm.setResource(ResourceType.JDBC, config, jndiName, attrMap, false); 232 } 233 dm.setUserResourceProp(config, WS70WizardConstants.__JdbcResource, jndiName, "property", props, false); 234 ErrorManager.getDefault().log(ErrorManager.USER, 235 NbBundle.getMessage(WS70ResourceUtils.class, "MSG_DeployConfig")); 236 237 dm.deployAndReconfig(config); 238 }else{ 239 Util.showError(NbBundle.getMessage(WS70ResourceUtils.class, "ERR_UNKNOWN_RESOURCE"), 240 NbBundle.getMessage(WS70ResourceUtils.class, "ERR_UNKNOWN_RESOURCE") 241 ); 242 return; 243 } 244 String msg = null; 245 if(added){ 246 msg = NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Resource_Added", jndiName); 247 }else{ 248 msg = NbBundle.getMessage(WS70ResourceUtils.class, "MSG_Resource_Updated", jndiName); 249 } 250 Util.showInformation(msg); 251 } 252 private static boolean isAlreadyRegisterdResource(String jndiName, String configName, 253 ResourceType resType, WS70SunDeploymentManager manager) throws Exception { 254 List resources = manager.getResources(resType, configName); 255 256 Object [] res = resources.toArray(); 257 for (int i = 0; i < res.length; i ++){ 258 String name = (String )((HashMap )res[i]).get("jndi-name"); 259 if(name!=null && name.equals(jndiName)){ 260 return true; 261 } 262 } 263 return false; 264 } 265 private static List getExtraProperties(PropertyElement[] props) throws Exception { 266 ArrayList list = new ArrayList (); 267 for(int i=0; i<props.length; i++){ 268 String name = props[i].getName(); 269 String value = props[i].getValue(); 270 if(value != null && value.trim().length() != 0){ 271 list.add(name+"="+value); 272 273 } 274 } 275 return list; 276 } 277 278 public static void saveJDBCResourceDatatoXml(ResourceConfigData dsData) { 279 try{ 280 WS70Resources res = getResourceGraph(); 281 WS70JdbcResource datasource = res.newWS70JdbcResource(); 282 283 String [] keys = dsData.getFieldNames(); 284 for (int i = 0; i < keys.length; i++) { 285 String key = keys[i]; 286 if (key.equals(__Properties)){ 287 Vector props = (Vector )dsData.getProperties(); 288 for (int j = 0; j < props.size(); j++) { 289 NameValuePair pair = (NameValuePair)props.elementAt(j); 290 PropertyElement prop = datasource.newPropertyElement(); 291 prop = populatePropertyElement(prop, pair); 292 datasource.addPropertyElement(prop); 293 } 294 }else{ 295 String value = dsData.getString(key); 296 if (key.equals(__JndiName)) 297 datasource.setJndiName(value); 298 else if (key.equals(__DatasourceClassname)) 299 datasource.setDatasourceClass(value); 300 else if (key.equals(__MinConnections)) 301 datasource.setMinConnections(value); 302 else if (key.equals(__MaxConnections)) 303 datasource.setMaxConnections(value); 304 else if (key.equals(__IdleTimeout)) 305 datasource.setIdleTimeout(value); 306 else if (key.equals(__WaitTimeout)) 307 datasource.setWaitTimeout(value); 308 else if (key.equals(__IsolationLevel)) 309 datasource.setIsolationLevel(value); 310 else if (key.equals(__IsolationLevelGuaranteed)) 311 datasource.setIsolationLevelGuaranteed(value); 312 else if (key.equals(__ConnectionValidation)) 313 datasource.setConnectionValidation(value); 314 else if (key.equals(__ConnectionValidationTableName)) 315 datasource.setConnectionValidationTableName(value); 316 else if (key.equals(__FailAllConnections)) 317 datasource.setFailAllConnections(value); 318 else if (key.equals(__Enabled)) 319 datasource.setEnabled(value); 320 else if (key.equals(__Description)) 321 datasource.setDescription(value); 322 } 323 324 } res.addWS70JdbcResource(datasource); 326 createFile(dsData.getTargetFileObject(), dsData.getTargetFile(), res); 330 }catch(Exception ex){ 331 ex.printStackTrace(); 332 System.out.println("Unable to saveJDBCResourceDatatoXml "); 333 } 334 } 335 336 337 public static void saveMailResourceDatatoXml(ResourceConfigData data) { 338 try{ 339 Vector vec = data.getProperties(); 340 WS70Resources res = getResourceGraph(); 341 WS70MailResource mlresource = res.newWS70MailResource(); 342 343 String [] keys = data.getFieldNames(); 344 for (int i = 0; i < keys.length; i++) { 345 String key = keys[i]; 346 if (key.equals(__Properties)) { 347 Vector props = (Vector )data.getProperties(); 348 for (int j = 0; j < props.size(); j++) { 349 NameValuePair pair = (NameValuePair)props.elementAt(j); 350 } 351 }else{ 352 String value = data.getString(key); 353 if (key.equals(__JndiName)) 354 mlresource.setJndiName(value); 355 else if (key.equals(__StoreProtocol)) 356 mlresource.setStoreProtocol(value); 357 else if (key.equals(__StoreProtocolClass)) 358 mlresource.setStoreProtocolClass(value); 359 else if (key.equals(__TransportProtocol)) 360 mlresource.setTransportProtocol(value); 361 else if (key.equals(__TransportProtocolClass)) 362 mlresource.setTransportProtocolClass(value); 363 else if (key.equals(__Host)) 364 mlresource.setHost(value); 365 else if (key.equals(__MailUser)) 366 mlresource.setUser(value); 367 else if (key.equals(__From)) 368 mlresource.setFrom(value); 369 else if (key.equals(__Enabled)) 370 mlresource.setEnabled(value); 371 else if (key.equals(__Description)) 372 mlresource.setDescription(value); 373 } 374 } 376 res.addWS70MailResource(mlresource); 377 createFile(data.getTargetFileObject(), data.getTargetFile(), res); 378 }catch(Exception ex){ 379 System.out.println("Unable to saveMailResourceDatatoXml "); 380 } 381 } 382 public static void saveCustomResourceDatatoXml(ResourceConfigData data) { 383 try{ 384 Vector vec = data.getProperties(); 385 WS70Resources res = getResourceGraph(); 386 WS70CustomResource customresource = res.newWS70CustomResource(); 387 388 String [] keys = data.getFieldNames(); 389 for (int i = 0; i < keys.length; i++) { 390 String key = keys[i]; 391 if (key.equals(__Properties)) { 392 Vector props = (Vector )data.getProperties(); 393 for (int j = 0; j < props.size(); j++) { 394 NameValuePair pair = (NameValuePair)props.elementAt(j); 395 PropertyElement prop = customresource.newPropertyElement(); 396 prop = populatePropertyElement(prop, pair); 397 customresource.addPropertyElement(prop); 398 } 399 }else{ 400 String value = data.getString(key); 401 if (key.equals(__JndiName)) 402 customresource.setJndiName(value); 403 else if (key.equals(__ResType)) 404 customresource.setResType(value); 405 else if (key.equals(__FactoryClass)) 406 customresource.setFactoryClass(value); 407 else if (key.equals(__Enabled)) 408 customresource.setEnabled(value); 409 else if (key.equals(__Description)) 410 customresource.setDescription(value); 411 } 412 } 414 res.addWS70CustomResource(customresource); 415 createFile(data.getTargetFileObject(), data.getTargetFile(), res); 416 }catch(Exception ex){ 417 ex.printStackTrace(); 418 System.out.println("Unable to saveCustomResourceDatatoXml "); 419 } 420 } 421 public static void saveExternalJndiResourceDatatoXml(ResourceConfigData data) { 422 try{ 423 Vector vec = data.getProperties(); 424 WS70Resources res = getResourceGraph(); 425 WS70ExternalJndiResource ejndiresource = res.newWS70ExternalJndiResource(); 426 427 String [] keys = data.getFieldNames(); 428 for (int i = 0; i < keys.length; i++) { 429 String key = keys[i]; 430 if (key.equals(__Properties)) { 431 Vector props = (Vector )data.getProperties(); 432 for (int j = 0; j < props.size(); j++) { 433 NameValuePair pair = (NameValuePair)props.elementAt(j); 434 PropertyElement prop = ejndiresource.newPropertyElement(); 435 prop = populatePropertyElement(prop, pair); 436 ejndiresource.addPropertyElement(prop); 437 } 438 }else{ 439 String value = data.getString(key); 440 if (key.equals(__JndiName)) 441 ejndiresource.setJndiName(value); 442 else if (key.equals(__ExternalJndiName)) 443 ejndiresource.setExternalJndiName(value); 444 else if (key.equals(__ResType)) 445 ejndiresource.setResType(value); 446 else if (key.equals(__FactoryClass)) 447 ejndiresource.setFactoryClass(value); 448 else if (key.equals(__Enabled)) 449 ejndiresource.setEnabled(value); 450 else if (key.equals(__Description)) 451 ejndiresource.setDescription(value); 452 } 453 } 455 res.addWS70ExternalJndiResource(ejndiresource); 456 createFile(data.getTargetFileObject(), data.getTargetFile(), res); 457 }catch(Exception ex){ 458 ex.printStackTrace(); 459 System.out.println("Unable to saveExternalJNDIResourceDatatoXml "); 460 } 461 } 462 463 public static void createFile(FileObject targetFolder, String filename, final WS70Resources res){ 464 try{ 465 if(filename.indexOf("/") != -1){ filename = filename.substring(0, filename.indexOf("/")) + "_" + filename.substring(filename.indexOf("/")+1, filename.length()); } 469 if(filename.indexOf("\\") != -1){ filename = filename.substring(0, filename.indexOf("\\")) + "_" + filename.substring(filename.indexOf("\\")+1, filename.length()); } 472 String oldName = filename; 473 targetFolder = setUpExists(targetFolder); 474 filename = createUniqueFileName(filename, targetFolder, null); 475 if(!filename.equals(oldName)){ 476 String msg = java.text.MessageFormat.format(NbBundle.getMessage(WS70ResourceUtils.class, "LBL_UniqueResourceName"), new Object []{oldName, filename}); org.openide.awt.StatusDisplayer.getDefault().setStatusText(msg); 478 } 479 480 final String resFileName = filename; 481 final FileObject resTargetFolder = targetFolder; 482 483 FileSystem fs = targetFolder.getFileSystem(); 484 fs.runAtomicAction(new FileSystem.AtomicAction() { 485 public void run() throws java.io.IOException { 486 FileObject newfile = resTargetFolder.createData(resFileName, "sun-ws7-resource"); 488 FileLock lock = newfile.lock(); 489 try { 490 PrintWriter to = new PrintWriter (newfile.getOutputStream(lock)); 491 try { 492 res.write(to); 493 to.flush(); 494 } catch(Exception ex){ 495 } finally { 497 to.close(); 498 } 499 } finally { 500 lock.releaseLock(); 501 } 502 } 503 }); 504 }catch(Exception ex){ 505 ex.printStackTrace(); 506 System.out.println("Error while creating file"); 508 } 509 } 510 511 public static String createUniqueFileName(String in_targetName, FileObject fo, String defName){ 512 String targetName = in_targetName; 513 514 if (targetName == null || targetName.length() == 0) { 515 targetName = FileUtil.findFreeFileName(fo, defName, __SunResourceExt); 516 }else{ 517 if(! isFriendlyFilename(targetName)){ 519 if(defName != null) 520 targetName = defName; 521 else 522 targetName = makeLegalFilename(targetName); 523 } 524 targetName = FileUtil.findFreeFileName(fo, targetName, __SunResourceExt); 525 } 526 return targetName; 527 } 528 529 public static FileObject setUpExists(FileObject targetFolder){ 530 FileObject pkgLocation = getResourceDirectory(targetFolder); 531 if(pkgLocation == null){ 532 return targetFolder; 534 }else{ 535 return pkgLocation; 536 } 537 } 538 539 private static WS70Resources getResourceGraph(){ 540 return org.netbeans.modules.j2ee.sun.ws7.serverresources.dd.impl.WS70Resources.createGraph(); 541 } 542 543 private static PropertyElement populatePropertyElement(PropertyElement prop, NameValuePair pair){ 544 prop.setName(pair.getParamName()); 545 prop.setValue(pair.getParamValue()); 546 return prop; 547 } 548 549 public static boolean isLegalFilename(String filename) { 551 for(int i = 0; i < ILLEGAL_FILENAME_CHARS.length; i++) 552 if(filename.indexOf(ILLEGAL_FILENAME_CHARS[i]) >= 0) 553 return false; 554 555 return true; 556 } 557 558 public static boolean isFriendlyFilename(String filename) { 559 if(filename.indexOf(BLANK) >= 0 || filename.indexOf(DOT) >= 0) 560 return false; 561 562 return isLegalFilename(filename); 563 } 564 565 public static String makeLegalFilename(String filename) { 566 for(int i = 0; i < ILLEGAL_FILENAME_CHARS.length; i++) 567 filename = filename.replace(ILLEGAL_FILENAME_CHARS[i], REPLACEMENT_CHAR); 568 569 return filename; 570 } 571 572 public static boolean isLegalResourceName(String filename) { 573 for(int i = 0; i < ILLEGAL_RESOURCE_NAME_CHARS.length; i++) 574 if(filename.indexOf(ILLEGAL_RESOURCE_NAME_CHARS[i]) >= 0) 575 return false; 576 577 return true; 578 } 579 580 public static FileObject getResourceDirectory(FileObject fo){ 581 Project holdingProj = FileOwnerQuery.getOwner(fo); 582 FileObject resourceDir = fo; 583 if (holdingProj != null){ 584 J2eeModuleProvider provider = (J2eeModuleProvider) holdingProj.getLookup().lookup(J2eeModuleProvider.class); 585 File resourceLoc = provider.getEnterpriseResourceDirectory(); 586 if(resourceLoc != null){ 587 if(resourceLoc.exists()){ 588 resourceDir = FileUtil.toFileObject(resourceLoc); 589 }else{ 590 resourceLoc.mkdirs(); 591 resourceDir = FileUtil.toFileObject(resourceLoc); 592 } 593 } 594 } 595 return resourceDir; 596 } 597 598 private final static char BLANK = ' '; 599 private final static char DOT = '.'; 600 private final static char REPLACEMENT_CHAR = '_'; 601 private final static char[] ILLEGAL_FILENAME_CHARS = {'/', '\\', ':', '*', '?', '"', '<', '>', '|', ',' }; 602 private final static char[] ILLEGAL_RESOURCE_NAME_CHARS = {':', '*', '?', '"', '<', '>', '|', ',' }; 603 } 604 | Popular Tags |