Author: keith
Date: Sun Dec 2 21:38:07 2007
New Revision: 10388
Modified:
trunk/mashup/java/modules/javascriptdeployer/src/org/wso2/mashup/deployer/JSDeployer.java
Log:
Adding resources into the registry only if they are not in the registry.
Workaround for Registry-18.
Modified:
trunk/mashup/java/modules/javascriptdeployer/src/org/wso2/mashup/deployer/JSDeployer.java
==============================================================================
---
trunk/mashup/java/modules/javascriptdeployer/src/org/wso2/mashup/deployer/JSDeployer.java
(original)
+++
trunk/mashup/java/modules/javascriptdeployer/src/org/wso2/mashup/deployer/JSDeployer.java
Sun Dec 2 21:38:07 2007
@@ -643,157 +643,176 @@
configCtx.getAxisConfiguration().addParameter(RegistryConstants.REGISTRY,
registry);
configCtx.getAxisConfiguration().addParameter(RegistryConstants.REGISTRY_REALM,
realm);
- // add queries to generate user profiles
+ if
(!registry.resourceExists(MashupConstants.QUERYSTORE_QUERY_PATH)) {
+// add queries to generate user profiles
- Resource queryCollection = new Resource();
- queryCollection.setDirectory(true);
- registry.put(MashupConstants.QUERYSTORE_QUERY_PATH,
queryCollection);
-
- // All mashups query
- addQuery(
- registry,
- MashupConstants.ALL_MASHUPS_QUERY_PATH,
- "SELECT PATH FROM ARTIFACTS WHERE MEDIA_TYPE='" +
MashupConstants.MASHUP_MEDIA_TYPE + "'",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- // Mashups from a specific user
- addQuery(
- registry,
- MashupConstants.MY_MASHUPS_QUERY_PATH,
- "SELECT PATH FROM ARTIFACTS WHERE AUTHOR=? AND MEDIA_TYPE='" +
MashupConstants.MASHUP_MEDIA_TYPE + "'",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- // Mashups rated 4.0 or better, sorted by rating.
- addQuery(
- registry,
- MashupConstants.TOP_MASHUPS_QUERY_PATH,
- "SELECT A.PATH FROM ARTIFACTS A, RATINGS R WHERE A.AID=R.AID AND
A.MEDIA_TYPE='" + MashupConstants.MASHUP_MEDIA_TYPE + "' GROUP BY A.PATH HAVING
AVG(R.RATING) >= 4.0 ORDER BY AVG(R.RATING) DESC",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- // Mashups from a specific user rated 4.0 or better, sorted by
rating.
- addQuery(
- registry,
- MashupConstants.MY_TOP_MASHUPS_QUERY_PATH,
- "SELECT A.PATH FROM ARTIFACTS A, RATINGS R WHERE A.AID=R.AID AND
A.AUTHOR=? AND A.MEDIA_TYPE='" + MashupConstants.MASHUP_MEDIA_TYPE + "' GROUP
BY A.PATH HAVING AVG(R.RATING) >= 4.0 ORDER BY AVG(R.RATING) DESC",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- Resource usersCollection = new Resource();
- usersCollection.setDirectory(true);
- registry.put("/users", queryCollection);
-
- Resource profileCollection = new Resource();
- profileCollection.setDirectory(true);
- registry.put("/users/profile", queryCollection);
-
- Resource systemCollection = new Resource();
- systemCollection.setDirectory(true);
- registry.put("/system", queryCollection);
-
- Resource queriesCollection = new Resource();
- queriesCollection.setDirectory(true);
- registry.put("/system/queries", queryCollection);
-
- Resource mashupsResource = new Resource();
- mashupsResource.setDirectory(true);
- registry.put("/mashups", mashupsResource);
-
- // This query accepts a resource path, a username, and a tag name,
and returns the resource path if that user applied that tag to the resource.
- // Used for checking whether the current user should be allowed
to delete the tag.
- addQuery(
- registry,
- MashupConstants.USER_TAGS_QUERY_PATH,
- "SELECT A.PATH FROM ARTIFACTS A, TAGS T WHERE A.PATH=? AND
T.TAG_NAME=? AND T.AID=A.AID AND T.USER_ID=? AND A.MEDIA_TYPE='" +
MashupConstants.MASHUP_MEDIA_TYPE + "'",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- // Query for mashups based on tag, description, or title
- // todo: queries aren't case insensitive
- addQuery(
- registry,
- MashupConstants.CUSTOM_QUERY_PATH,
- "SELECT DISTINCT A.PATH FROM ARTIFACTS A, TAGS T WHERE (A.PATH
LIKE ? OR A.DESCRIPTION LIKE ? OR (T.TAG_NAME=? AND T.AID=A.AID)) AND
A.MEDIA_TYPE='" + MashupConstants.MASHUP_MEDIA_TYPE + "'",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- // Query for mashups from a specific user based on tag,
description, or title
- // todo: queries aren't case insensitive
- addQuery(
- registry,
- MashupConstants.MY_CUSTOM_QUERY_PATH,
- "SELECT DISTINCT A.PATH FROM ARTIFACTS A, TAGS T WHERE (A.PATH
LIKE ? OR A.DESCRIPTION LIKE ? OR (T.TAG_NAME=? AND T.AID=A.AID)) AND
A.AUTHOR=? AND A.MEDIA_TYPE='" + MashupConstants.MASHUP_MEDIA_TYPE + "'",
- RegistryConstants.RESOURCES_RESULT_TYPE
- );
-
- SecureRegistry secureRegistry = new SecureRegistry(
- RegistryConstants.ADMIN_USER,
MashupConstants.ADMIN_PASSWORD, registry, realm);
-
- RegistryUserManager userManager = secureRegistry.getUserManager();
-
- // add profile for the anonymous user
-
- AccessControlAdmin ac = realm.getAccessControlAdmin();
- UserStoreAdmin us = realm.getUserStoreAdmin();
-
- ac.authorizeRole(MashupConstants.EVERYONE_ROLE,
MashupConstants.ALL_MASHUPS_PATH, UserManagerConstants.READ);
- ac.authorizeRole(MashupConstants.EVERYONE_ROLE,
MashupConstants.ALL_MASHUPS_QUERY_PATH, UserManagerConstants.READ);
-
- String anonName = RegistryConstants.ANONYMOUS_USER;
- us.addUserToRole(anonName, MashupConstants.EVERYONE_ROLE);
-
- // create a collection for the new user
- Resource userCollection = new Resource();
- userCollection.setDirectory(true);
- registry.put("/users/" + anonName, userCollection);
- ac.authorizeUser(anonName, "/users/" + anonName,
UserManagerConstants.EDIT);
-
- // add some predefined queries for the new user
- String profilePath = "/users/" + anonName + "/profile";
- userManager.setUserProperty(anonName,
MashupConstants.PROFILE_PATH, profilePath);
- userManager.setUserProperty(anonName, MashupConstants.FORMAL_NAME,
"Visitor");
-
- User user = new User();
- user.setEmailAddress("none");
- user.setUsername(anonName);
- user.setBio("Anonymous user");
-
- user.addQuery("All Mashups",
MashupConstants.ALL_MASHUPS_QUERY_PATH, new String[] {});
-
- Resource userProfile = new Resource();
- userProfile.setContent(user.serializeUserProfile().getBytes());
- registry.put(profilePath, userProfile);
-
- // add profile for the admin user
-
- String adminName = RegistryConstants.ADMIN_USER;
- us.addUserToRole(adminName, MashupConstants.EVERYONE_ROLE);
-
- // create a collection for the new user
- Resource adminUserCollection = new Resource();
- adminUserCollection.setDirectory(true);
- registry.put("/users/" + adminName, adminUserCollection);
- ac.authorizeUser(adminName, "/users/" + adminName,
UserManagerConstants.EDIT);
-
- // add some predefined queries for the new user
- String adminProfilePath = "/users/" + adminName + "/profile";
- userManager.setUserProperty(adminName,
MashupConstants.PROFILE_PATH, adminProfilePath);
- userManager.setUserProperty(adminName,
MashupConstants.FORMAL_NAME, "Administrator");
-
- User adminUser = new User();
- adminUser.setEmailAddress("None");
- adminUser.setUsername(adminName);
- adminUser.setBio("System administrator");
-
- adminUser.addQuery("My Mashups",
MashupConstants.MY_MASHUPS_QUERY_PATH, new String[] {adminName});
- adminUser.addQuery("All Mashups",
MashupConstants.ALL_MASHUPS_QUERY_PATH, new String[] {});
-
- Resource adminUserProfile = new Resource();
-
adminUserProfile.setContent(adminUser.serializeUserProfile().getBytes());
- registry.put(adminProfilePath, adminUserProfile);
- ac.authorizeUser(adminName, adminProfilePath, ActionConstants.PUT);
+ Resource queryCollection = new Resource();
+ queryCollection.setDirectory(true);
+ registry.put(MashupConstants.QUERYSTORE_QUERY_PATH,
queryCollection);
+
+ // All mashups query
+ addQuery(
+ registry,
+ MashupConstants.ALL_MASHUPS_QUERY_PATH,
+ "SELECT PATH FROM ARTIFACTS WHERE MEDIA_TYPE='" +
MashupConstants
+ .MASHUP_MEDIA_TYPE + "'",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ // Mashups from a specific user
+ addQuery(
+ registry,
+ MashupConstants.MY_MASHUPS_QUERY_PATH,
+ "SELECT PATH FROM ARTIFACTS WHERE AUTHOR=? AND
MEDIA_TYPE='" +
+ MashupConstants.MASHUP_MEDIA_TYPE + "'",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ // Mashups rated 4.0 or better, sorted by rating.
+ addQuery(
+ registry,
+ MashupConstants.TOP_MASHUPS_QUERY_PATH,
+ "SELECT A.PATH FROM ARTIFACTS A, RATINGS R WHERE
A.AID=R.AID AND A.MEDIA_TYPE='" +
+ MashupConstants.MASHUP_MEDIA_TYPE +
+ "' GROUP BY A.PATH HAVING AVG(R.RATING) >= 4.0
ORDER BY AVG(R.RATING) DESC",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ // Mashups from a specific user rated 4.0 or better, sorted by
rating.
+ addQuery(
+ registry,
+ MashupConstants.MY_TOP_MASHUPS_QUERY_PATH,
+ "SELECT A.PATH FROM ARTIFACTS A, RATINGS R WHERE
A.AID=R.AID AND A.AUTHOR=? AND A.MEDIA_TYPE='" +
+ MashupConstants.MASHUP_MEDIA_TYPE +
+ "' GROUP BY A.PATH HAVING AVG(R.RATING) >= 4.0
ORDER BY AVG(R.RATING) DESC",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ Resource usersCollection = new Resource();
+ usersCollection.setDirectory(true);
+ registry.put("/users", queryCollection);
+
+ Resource profileCollection = new Resource();
+ profileCollection.setDirectory(true);
+ registry.put("/users/profile", queryCollection);
+
+ Resource systemCollection = new Resource();
+ systemCollection.setDirectory(true);
+ registry.put("/system", queryCollection);
+
+ Resource queriesCollection = new Resource();
+ queriesCollection.setDirectory(true);
+ registry.put("/system/queries", queryCollection);
+
+ Resource mashupsResource = new Resource();
+ mashupsResource.setDirectory(true);
+ registry.put("/mashups", mashupsResource);
+
+ // This query accepts a resource path, a username, and a tag
name, and returns the resource path if that user applied that tag to the
resource.
+ // Used for checking whether the current user should be
allowed to delete the tag.
+ addQuery(
+ registry,
+ MashupConstants.USER_TAGS_QUERY_PATH,
+ "SELECT A.PATH FROM ARTIFACTS A, TAGS T WHERE A.PATH=?
AND T.TAG_NAME=? AND T.AID=A.AID AND T.USER_ID=? AND A.MEDIA_TYPE='" +
+ MashupConstants.MASHUP_MEDIA_TYPE + "'",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ // Query for mashups based on tag, description, or title
+ // todo: queries aren't case insensitive
+ addQuery(
+ registry,
+ MashupConstants.CUSTOM_QUERY_PATH,
+ "SELECT DISTINCT A.PATH FROM ARTIFACTS A, TAGS T WHERE
(A.PATH LIKE ? OR A.DESCRIPTION LIKE ? OR (T.TAG_NAME=? AND T.AID=A.AID)) AND
A.MEDIA_TYPE='" +
+ MashupConstants.MASHUP_MEDIA_TYPE + "'",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ // Query for mashups from a specific user based on tag,
description, or title
+ // todo: queries aren't case insensitive
+ addQuery(
+ registry,
+ MashupConstants.MY_CUSTOM_QUERY_PATH,
+ "SELECT DISTINCT A.PATH FROM ARTIFACTS A, TAGS T WHERE
(A.PATH LIKE ? OR A.DESCRIPTION LIKE ? OR (T.TAG_NAME=? AND T.AID=A.AID)) AND
A.AUTHOR=? AND A.MEDIA_TYPE='" +
+ MashupConstants.MASHUP_MEDIA_TYPE + "'",
+ RegistryConstants.RESOURCES_RESULT_TYPE
+ );
+
+ SecureRegistry secureRegistry = new SecureRegistry(
+ RegistryConstants.ADMIN_USER,
MashupConstants.ADMIN_PASSWORD, registry,
+ realm);
+
+ RegistryUserManager userManager =
secureRegistry.getUserManager();
+
+ // add profile for the anonymous user
+
+ AccessControlAdmin ac = realm.getAccessControlAdmin();
+ UserStoreAdmin us = realm.getUserStoreAdmin();
+
+ ac.authorizeRole(MashupConstants.EVERYONE_ROLE,
MashupConstants.ALL_MASHUPS_PATH,
+ UserManagerConstants.READ);
+ ac.authorizeRole(MashupConstants.EVERYONE_ROLE,
+ MashupConstants.ALL_MASHUPS_QUERY_PATH,
UserManagerConstants.READ);
+
+ String anonName = RegistryConstants.ANONYMOUS_USER;
+ us.addUserToRole(anonName, MashupConstants.EVERYONE_ROLE);
+
+ // create a collection for the new user
+ Resource userCollection = new Resource();
+ userCollection.setDirectory(true);
+ registry.put("/users/" + anonName, userCollection);
+ ac.authorizeUser(anonName, "/users/" + anonName,
UserManagerConstants.EDIT);
+
+ // add some predefined queries for the new user
+ String profilePath = "/users/" + anonName + "/profile";
+ userManager.setUserProperty(anonName,
MashupConstants.PROFILE_PATH, profilePath);
+ userManager.setUserProperty(anonName,
MashupConstants.FORMAL_NAME, "Visitor");
+
+ User user = new User();
+ user.setEmailAddress("none");
+ user.setUsername(anonName);
+ user.setBio("Anonymous user");
+
+ user.addQuery("All Mashups",
MashupConstants.ALL_MASHUPS_QUERY_PATH,
+ new String[] { });
+
+ Resource userProfile = new Resource();
+ userProfile.setContent(user.serializeUserProfile().getBytes());
+ registry.put(profilePath, userProfile);
+
+ // add profile for the admin user
+
+ String adminName = RegistryConstants.ADMIN_USER;
+ us.addUserToRole(adminName, MashupConstants.EVERYONE_ROLE);
+
+ // create a collection for the new user
+ Resource adminUserCollection = new Resource();
+ adminUserCollection.setDirectory(true);
+ registry.put("/users/" + adminName, adminUserCollection);
+ ac.authorizeUser(adminName, "/users/" + adminName,
UserManagerConstants.EDIT);
+
+ // add some predefined queries for the new user
+ String adminProfilePath = "/users/" + adminName + "/profile";
+ userManager
+ .setUserProperty(adminName,
MashupConstants.PROFILE_PATH, adminProfilePath);
+ userManager
+ .setUserProperty(adminName,
MashupConstants.FORMAL_NAME, "Administrator");
+
+ User adminUser = new User();
+ adminUser.setEmailAddress("None");
+ adminUser.setUsername(adminName);
+ adminUser.setBio("System administrator");
+
+ adminUser.addQuery("My Mashups",
MashupConstants.MY_MASHUPS_QUERY_PATH,
+ new String[] { adminName });
+ adminUser.addQuery("All Mashups",
MashupConstants.ALL_MASHUPS_QUERY_PATH,
+ new String[] { });
+
+ Resource adminUserProfile = new Resource();
+
adminUserProfile.setContent(adminUser.serializeUserProfile().getBytes());
+ registry.put(adminProfilePath, adminUserProfile);
+ ac.authorizeUser(adminName, adminProfilePath,
ActionConstants.PUT);
+ }
} catch (UserManagerException e) {
e.printStackTrace();
throw new MashupFault(e);
_______________________________________________
Mashup-dev mailing list
[email protected]
http://www.wso2.org/cgi-bin/mailman/listinfo/mashup-dev