}
public static String loadWithNewPattern(S3 s3,RefInteger storage, String path) {
PageContext pc = ThreadLocalPageContext.get();
Properties prop=null;
if(pc!=null){
prop=pc.getApplicationContext().getS3();
}
if(prop==null) prop=new PropertiesImpl();
int defaultLocation = prop.getDefaultLocation();
storage.setValue(defaultLocation);
String accessKeyId = prop.getAccessKeyId();
String secretAccessKey = prop.getSecretAccessKey();
int atIndex=path.indexOf('@');
int slashIndex=path.indexOf('/');
if(slashIndex==-1){
slashIndex=path.length();
path+="/";
}
int index;
// key/id
if(atIndex!=-1) {
index=path.indexOf(':');
if(index!=-1 && index<atIndex) {
accessKeyId=path.substring(0,index);
secretAccessKey=path.substring(index+1,atIndex);
index=secretAccessKey.indexOf(':');
if(index!=-1) {
String strStorage=secretAccessKey.substring(index+1).trim().toLowerCase();
secretAccessKey=secretAccessKey.substring(0,index);
//print.out("storage:"+strStorage);
storage.setValue(S3.toIntStorage(strStorage, defaultLocation));
}
}
else accessKeyId=path.substring(0,atIndex);
}
path=prettifyPath(path.substring(atIndex+1));
index=path.indexOf('/');
s3.setHost(prop.getHost());
if(index==-1){
if(path.equalsIgnoreCase(S3Constants.HOST) || path.equalsIgnoreCase(prop.getHost())){
s3.setHost(path);
path="/";
}
}
else {
String host=path.substring(0,index);
if(host.equalsIgnoreCase(S3Constants.HOST) || host.equalsIgnoreCase(prop.getHost())){
s3.setHost(host);
path=path.substring(index);
}
}