Skip to main content



      Home
Home » Modeling » TMF (Xtext) » Save Failed Attempted to beginRule: does not match outer scope rule
Save Failed Attempted to beginRule: does not match outer scope rule [message #1077211] Thu, 01 August 2013 07:28 Go to next message
Eclipse UserFriend
Hi all ,

I try split two xtext editor.one elements is created one editor ,created element's related attribute must created automatically in the other editor.but I receive an error I do not solved this problem :
Save Failed
Attempted to beginRule: L/deneme/user.user, does not match outer scope rule: L/deneme/contentdeneme.content

I share my code :


package com.mdd4cca.msf.content.content.util;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.eclipse.core.resources.IFile;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.PlatformUI;
import org.eclipse.xtext.resource.SaveOptions;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.mdd4cca.msf.content.ContentStandaloneSetup;
import com.mdd4cca.msf.content.content.Web;
import com.mdd4cca.msf.user.UserRuntimeModule;
import com.mdd4cca.msf.user.UserStandaloneSetup;
import com.mdd4cca.msf.user.user.BasePermission;
import com.mdd4cca.msf.user.user.Group;
import com.mdd4cca.msf.user.user.RoleAssignment;
import com.mdd4cca.msf.user.user.RoleDefinition;
import com.mdd4cca.msf.user.user.SitePermission;
import com.mdd4cca.msf.user.user.UserFactory;
import com.mdd4cca.msf.user.user.UserModel;
import com.mdd4cca.msf.user.user.UserPackage;
import com.mdd4cca.msf.user.user.util.UserConstant;

public class SitePermissionUtil {

	public static SitePermission createDefaultSitePermission(String webName,
			String webGuID,UserModel userModel) {
		// Initialize the model
		UserPackage.eINSTANCE.eClass();
		// Retrieve the default factory singleton
		UserFactory factory = UserFactory.eINSTANCE;
		// SitePermission
		SitePermission sitePermission = factory.createSitePermission();
		sitePermission.setName(webName);
		sitePermission.setWebGUID(webGuID);

		// Owners Group
		Group ownerGroup = UserFactory.eINSTANCE.createGroup();
		ownerGroup.setName("Owners");
		sitePermission.getOwnedGroup().add(ownerGroup);
		// Members Group
		Group memberGroup = UserFactory.eINSTANCE.createGroup();
		memberGroup.setName("Members");
		sitePermission.getOwnedGroup().add(memberGroup);
		// Visitors Group
		Group visitorsGroup = UserFactory.eINSTANCE.createGroup();
		visitorsGroup.setName("Visitors");
		sitePermission.getOwnedGroup().add(visitorsGroup);
		// Viewers Group
		Group viewersGroup = UserFactory.eINSTANCE.createGroup();
		viewersGroup.setName("Viewers");
		sitePermission.getOwnedGroup().add(viewersGroup);
		// viewersRoleDefinitions
		RoleDefinition viewerRole = UserFactory.eINSTANCE.createRoleDefinition();
		viewerRole.setName("viewerRoleDefinition");
		viewerRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
		viewerRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
		viewerRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
		viewerRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
		viewerRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
		viewerRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
		viewerRole.getBasePermissions().add(
				BasePermission.USE_CLIENT_INTEGRATION);
		viewerRole.getBasePermissions().add(BasePermission.OPEN);
		sitePermission.getOwnedRoleDefinition().add(viewerRole);
		// ownerRoleDefinitions
		RoleDefinition ownerRole = UserFactory.eINSTANCE.createRoleDefinition();
		ownerRole.setName("ownerRoleDefinition");
		List<BasePermission> permissions = BasePermission.VALUES;
		for (Iterator<BasePermission> iterator = permissions.iterator(); iterator
				.hasNext();) {
			BasePermission basePermission = (BasePermission) iterator.next();
			ownerRole.getBasePermissions().add(basePermission);
		}
		sitePermission.getOwnedRoleDefinition().add(ownerRole);
		// memberRoleDefinition
		RoleDefinition memberRole = UserFactory.eINSTANCE.createRoleDefinition();
		memberRole.setName("memberRoleDefinition");
		memberRole.getBasePermissions().add(BasePermission.ADD_LIST_ITEMS);
		memberRole.getBasePermissions().add(BasePermission.EDIT_LIST_ITEMS);
		memberRole.getBasePermissions().add(BasePermission.DELETE_LIST_ITEMS);
		memberRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
		memberRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
		memberRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
		memberRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
		memberRole.getBasePermissions().add(BasePermission.BROWSE_DIRECTORIES);
		memberRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
		memberRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
		memberRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
		memberRole.getBasePermissions().add(
				BasePermission.USE_CLIENT_INTEGRATION);
		memberRole.getBasePermissions().add(BasePermission.OPEN);
		memberRole.getBasePermissions().add(BasePermission.EDIT_MY_USER_INFO);
		memberRole.getBasePermissions().add(
				BasePermission.MANAGE_PERSONAL_VIEWS);
		memberRole.getBasePermissions().add(
				BasePermission.ADD_DEL_PRIVATE_WEB_PARTS);
		memberRole.getBasePermissions().add(
				BasePermission.UPDATE_PERSONAL_WEB_PARTS);
		sitePermission.getOwnedRoleDefinition().add(memberRole);
		// visitor Role Definition.
		RoleDefinition VisitorsRole = UserFactory.eINSTANCE.createRoleDefinition();
		VisitorsRole.setName("visitorsRoleDefinition");
		VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
		VisitorsRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
		VisitorsRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
		VisitorsRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
		VisitorsRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
		VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
		VisitorsRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
		VisitorsRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
		VisitorsRole.getBasePermissions().add(
				BasePermission.USE_CLIENT_INTEGRATION);
		VisitorsRole.getBasePermissions().add(BasePermission.OPEN);
		sitePermission.getOwnedRoleDefinition().add(VisitorsRole);
		// Full Control Assignment
		RoleAssignment ownerRoleAssignment = UserFactory.eINSTANCE
				.createRoleAssignment();
		ownerRoleAssignment.setName("FullControl");
		ownerRoleAssignment.setMember(ownerGroup);
		ownerRoleAssignment.getRoleDefinitionBindings().add(ownerRole);
		sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
		// Contribute Assignment
		RoleAssignment memeberRoleAssignment = UserFactory.eINSTANCE
				.createRoleAssignment();
		memeberRoleAssignment.setName("Contribute");
		memeberRoleAssignment.setMember(memberGroup);
		memeberRoleAssignment.getRoleDefinitionBindings().add(memberRole);
		sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
		// Read Assignment
		RoleAssignment visitorsRoleAssignment = UserFactory.eINSTANCE
				.createRoleAssignment();
		visitorsRoleAssignment.setName("Read");
		visitorsRoleAssignment.setMember(visitorsGroup);
		visitorsRoleAssignment.getRoleDefinitionBindings().add(VisitorsRole);
		sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
		// Full Control Assignment
		RoleAssignment viewersRoleAssignment = UserFactory.eINSTANCE
				.createRoleAssignment();
		viewersRoleAssignment.setName("ViewOnly");
		viewersRoleAssignment.setMember(viewersGroup);
		viewersRoleAssignment.getRoleDefinitionBindings().add(viewerRole);
		sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
		// Add Role Assignment to web
		sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
		sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
		sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
		sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
		sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
		
		return sitePermission;
	}

	public static SitePermission loadAndAddSitePermission(String webName,
			String webGuID){
		ContentStandaloneSetup.doSetup();
		SitePermission sitePermission = null;
	
		Injector injector = Guice.createInjector(new UserRuntimeModule());
		XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
		resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
			
		Resource resource = resourceSet.getResource(URI.createURI(getUserFileLocationURI()), true);
		
		UserModel model = (UserModel) resource.getContents().get(0);
		
		sitePermission = createDefaultSitePermission(webName, webGuID, model);
	   // model.getSitePermissions().add(s);
	   // System.out.println( model.getSitePermissions().add(s));
	   // resource.getContents().add(s);
		try {
			Map options = new HashMap();
		    SaveOptions.defaultOptions().addTo(options);
		    resource.save(options);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	
		
	return sitePermission;
	    

	}
	
	public static String getUserFileLocationURI() {
		IEditorPart editorPart = PlatformUI.getWorkbench()
				.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
		
		if (editorPart != null) {
			IFileEditorInput input = (IFileEditorInput) editorPart
					.getEditorInput();
			IFile file = input.getFile();
			
			String path = "";
			int segmentCount = file.getProjectRelativePath().segmentCount();
			if(segmentCount != 1){
				for (int i = 0; i < segmentCount -1; i++) {
					path += file.getProjectRelativePath().segment(i) + "/";
				}
			}
			
return "platform:/resource/" + file.getProject().getName() + "/" + path + UserConstant.USER_FILE_NAME;
		
		}
		return "";
	}
}




When I save editor,I called above class


Best regards
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1081406 is a reply to message #1077211] Wed, 07 August 2013 03:35 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

first of all: Never use a standalone setup in Eclipse. It will brick you
currently running instance in all sorts of horrible and unpredictable
ways. The same applies for Guice.createInjector(new XYZRuntimeModule());

If you really want to modify different files on save, you'll have to
override XtextDocumentProvider.getSaveRule(..)

Please have a look at the workspace concepts especially on scheduling
rules for details.

Regards,
Sebastian
--
Looking for professional support for Xtext, Xtend or Eclipse Modeling?
Go visit: http://xtext.itemis.com

Am 01.08.13 13:29, schrieb junior developer:
> Hi all ,
>
> I try split two xtext editor.one elements is created one editor ,created
> element's related attribute must created automatically in the other
> editor.but I receive an error I do not solved this problem :
>
> Save Failed
> Attempted to beginRule: L/deneme/user.user, does not match outer scope
> rule: L/deneme/contentdeneme.content
>
> I share my code :
>
>
>
> package com.mdd4cca.msf.content.content.util;
>
> import java.io.IOException;
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.Iterator;
> import java.util.List;
> import java.util.Map;
>
> import org.eclipse.core.resources.IFile;
> import org.eclipse.emf.common.util.URI;
> import org.eclipse.emf.ecore.EObject;
> import org.eclipse.emf.ecore.resource.Resource;
> import org.eclipse.emf.ecore.resource.ResourceSet;
> import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
> import org.eclipse.emf.transaction.util.TransactionUtil;
> import org.eclipse.ui.IEditorPart;
> import org.eclipse.ui.IFileEditorInput;
> import org.eclipse.ui.PlatformUI;
> import org.eclipse.xtext.resource.SaveOptions;
> import org.eclipse.xtext.resource.XtextResource;
> import org.eclipse.xtext.resource.XtextResourceSet;
>
> import com.google.inject.Guice;
> import com.google.inject.Injector;
> import com.mdd4cca.msf.content.ContentStandaloneSetup;
> import com.mdd4cca.msf.content.content.Web;
> import com.mdd4cca.msf.user.UserRuntimeModule;
> import com.mdd4cca.msf.user.UserStandaloneSetup;
> import com.mdd4cca.msf.user.user.BasePermission;
> import com.mdd4cca.msf.user.user.Group;
> import com.mdd4cca.msf.user.user.RoleAssignment;
> import com.mdd4cca.msf.user.user.RoleDefinition;
> import com.mdd4cca.msf.user.user.SitePermission;
> import com.mdd4cca.msf.user.user.UserFactory;
> import com.mdd4cca.msf.user.user.UserModel;
> import com.mdd4cca.msf.user.user.UserPackage;
> import com.mdd4cca.msf.user.user.util.UserConstant;
>
> public class SitePermissionUtil {
>
> public static SitePermission createDefaultSitePermission(String
> webName,
> String webGuID,UserModel userModel) {
> // Initialize the model
> UserPackage.eINSTANCE.eClass();
> // Retrieve the default factory singleton
> UserFactory factory = UserFactory.eINSTANCE;
> // SitePermission
> SitePermission sitePermission = factory.createSitePermission();
> sitePermission.setName(webName);
> sitePermission.setWebGUID(webGuID);
>
> // Owners Group
> Group ownerGroup = UserFactory.eINSTANCE.createGroup();
> ownerGroup.setName("Owners");
> sitePermission.getOwnedGroup().add(ownerGroup);
> // Members Group
> Group memberGroup = UserFactory.eINSTANCE.createGroup();
> memberGroup.setName("Members");
> sitePermission.getOwnedGroup().add(memberGroup);
> // Visitors Group
> Group visitorsGroup = UserFactory.eINSTANCE.createGroup();
> visitorsGroup.setName("Visitors");
> sitePermission.getOwnedGroup().add(visitorsGroup);
> // Viewers Group
> Group viewersGroup = UserFactory.eINSTANCE.createGroup();
> viewersGroup.setName("Viewers");
> sitePermission.getOwnedGroup().add(viewersGroup);
> // viewersRoleDefinitions
> RoleDefinition viewerRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> viewerRole.setName("viewerRoleDefinition");
>
> viewerRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
> viewerRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
> viewerRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
>
> viewerRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
>
> viewerRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
>
> viewerRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
> viewerRole.getBasePermissions().add(
> BasePermission.USE_CLIENT_INTEGRATION);
> viewerRole.getBasePermissions().add(BasePermission.OPEN);
> sitePermission.getOwnedRoleDefinition().add(viewerRole);
> // ownerRoleDefinitions
> RoleDefinition ownerRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> ownerRole.setName("ownerRoleDefinition");
> List<BasePermission> permissions = BasePermission.VALUES;
> for (Iterator<BasePermission> iterator =
> permissions.iterator(); iterator
> .hasNext();) {
> BasePermission basePermission = (BasePermission)
> iterator.next();
> ownerRole.getBasePermissions().add(basePermission);
> }
> sitePermission.getOwnedRoleDefinition().add(ownerRole);
> // memberRoleDefinition
> RoleDefinition memberRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> memberRole.setName("memberRoleDefinition");
>
> memberRole.getBasePermissions().add(BasePermission.ADD_LIST_ITEMS);
>
> memberRole.getBasePermissions().add(BasePermission.EDIT_LIST_ITEMS);
>
> memberRole.getBasePermissions().add(BasePermission.DELETE_LIST_ITEMS);
>
> memberRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
> memberRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
> memberRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
> memberRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
>
> memberRole.getBasePermissions().add(BasePermission.BROWSE_DIRECTORIES);
>
> memberRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
>
> memberRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
>
> memberRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
> memberRole.getBasePermissions().add(
> BasePermission.USE_CLIENT_INTEGRATION);
> memberRole.getBasePermissions().add(BasePermission.OPEN);
>
> memberRole.getBasePermissions().add(BasePermission.EDIT_MY_USER_INFO);
> memberRole.getBasePermissions().add(
> BasePermission.MANAGE_PERSONAL_VIEWS);
> memberRole.getBasePermissions().add(
> BasePermission.ADD_DEL_PRIVATE_WEB_PARTS);
> memberRole.getBasePermissions().add(
> BasePermission.UPDATE_PERSONAL_WEB_PARTS);
> sitePermission.getOwnedRoleDefinition().add(memberRole);
> // visitor Role Definition.
> RoleDefinition VisitorsRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> VisitorsRole.setName("visitorsRoleDefinition");
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
> VisitorsRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
>
> VisitorsRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
> VisitorsRole.getBasePermissions().add(
> BasePermission.USE_CLIENT_INTEGRATION);
> VisitorsRole.getBasePermissions().add(BasePermission.OPEN);
> sitePermission.getOwnedRoleDefinition().add(VisitorsRole);
> // Full Control Assignment
> RoleAssignment ownerRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> ownerRoleAssignment.setName("FullControl");
> ownerRoleAssignment.setMember(ownerGroup);
> ownerRoleAssignment.getRoleDefinitionBindings().add(ownerRole);
> sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
> // Contribute Assignment
> RoleAssignment memeberRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> memeberRoleAssignment.setName("Contribute");
> memeberRoleAssignment.setMember(memberGroup);
> memeberRoleAssignment.getRoleDefinitionBindings().add(memberRole);
>
> sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
> // Read Assignment
> RoleAssignment visitorsRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> visitorsRoleAssignment.setName("Read");
> visitorsRoleAssignment.setMember(visitorsGroup);
>
> visitorsRoleAssignment.getRoleDefinitionBindings().add(VisitorsRole);
>
> sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
> // Full Control Assignment
> RoleAssignment viewersRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> viewersRoleAssignment.setName("ViewOnly");
> viewersRoleAssignment.setMember(viewersGroup);
> viewersRoleAssignment.getRoleDefinitionBindings().add(viewerRole);
>
> sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
> // Add Role Assignment to web
>
> sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
> sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
>
> sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
>
> sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
>
> sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
>
> return sitePermission;
> }
>
> public static SitePermission loadAndAddSitePermission(String webName,
> String webGuID){
> ContentStandaloneSetup.doSetup();
> SitePermission sitePermission = null;
>
> Injector injector = Guice.createInjector(new UserRuntimeModule());
> XtextResourceSet resourceSet =
> injector.getInstance(XtextResourceSet.class);
> resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL,
> Boolean.TRUE);
>
> Resource resource =
> resourceSet.getResource(URI.createURI(getUserFileLocationURI()), true);
>
> UserModel model = (UserModel) resource.getContents().get(0);
>
> sitePermission = createDefaultSitePermission(webName, webGuID,
> model);
> // model.getSitePermissions().add(s);
> // System.out.println( model.getSitePermissions().add(s));
> // resource.getContents().add(s);
> try {
> Map options = new HashMap();
> SaveOptions.defaultOptions().addTo(options);
> resource.save(options);
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
>
>
>
> return sitePermission;
>
> }
>
> public static String getUserFileLocationURI() {
> IEditorPart editorPart = PlatformUI.getWorkbench()
>
> .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
>
> if (editorPart != null) {
> IFileEditorInput input = (IFileEditorInput) editorPart
> .getEditorInput();
> IFile file = input.getFile();
>
> String path = "";
> int segmentCount =
> file.getProjectRelativePath().segmentCount();
> if(segmentCount != 1){
> for (int i = 0; i < segmentCount -1; i++) {
> path += file.getProjectRelativePath().segment(i) +
> "/";
> }
> }
>
> return "platform:/resource/" + file.getProject().getName() + "/" + path
> + UserConstant.USER_FILE_NAME;
>
> }
> return "";
> }
> }
>
>
>
>
> When I save editor,I called above class
>
> Best regards
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1085171 is a reply to message #1081406] Mon, 12 August 2013 10:53 Go to previous messageGo to next message
Eclipse UserFriend
Hi Sebastian,

I used XtextDocumentProvider in my project already.


public class SitePermission7 {
	@Inject
	Provider<XtextResourceSet> rsp;
	
	
	public File userFile;

	public static SitePermission createDefaultSitePermission(String webName,String webGuID,
			 UserModel userModel) {
		// Initialize the model
		MyDsl2Package.eINSTANCE.eClass();
		// Retrieve the default factory singleton
		MyDsl2Factory factory = MyDsl2Factory.eINSTANCE;
		// SitePermission
		SitePermission sitePermission = factory.createSitePermission();
		sitePermission.setName(webName);
		sitePermission.setWebGUID(webGuID);

		// Owners Group
		Group ownerGroup = MyDsl2Factory.eINSTANCE.createGroup();
		ownerGroup.setName("Owners");
		sitePermission.getOwnedGroup().add(ownerGroup);
		
        
		userModel.getSitePermissions().add(sitePermission);
		
		return sitePermission;
	}

	public SitePermission loadForCreateSitePermission(String webName,String webGuID) {
		
		
		SitePermission sitePermission = null;
	
		XtextResourceSet resourceSet = rsp.get();
		
		resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
		
		Resource resource = resourceSet.getResource(URI.createURI(getUserFileLocationURI()), true);
			System.out.println(resource);
			
			UserModel eobject = (UserModel) resource.getContents().get(0);
			
			sitePermission = createDefaultSitePermission(webName,webGuID,  eobject);
		
			try {
				resource.save(null);
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		
		return sitePermission;
	}

public  String getUserFileLocationURI() {
		IEditorPart editorPart = PlatformUI.getWorkbench()
				.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
		
		if (editorPart != null) {
			IFileEditorInput input = (IFileEditorInput) editorPart
					.getEditorInput();
			IFile file = input.getFile();
			
			String path = "";
			int segmentCount = file.getProjectRelativePath().segmentCount();
			if(segmentCount != 1){
				for (int i = 0; i < segmentCount -1; i++) {
					path += file.getProjectRelativePath().segment(i) + "/";
				}
			}
			return "platform:/resource/" + file.getProject().getName() + "/" + path + UserConstant.USER_FILE_NAME;
		}
		return "";
	}
	




I call above util class in the XtextDocumentProvider.doSaveDocument.

public class AutoEdit extends XtextDocumentProvider{
	
	final static List<String> contentUnitNames = new ArrayList<String>();
	
	@Inject
	SitePermission7  sitepermission6;
	
	
	@Override
	protected void doSaveDocument(IProgressMonitor monitor, Object element,
			IDocument document, boolean overwrite) throws CoreException {
		super.doSaveDocument(monitor, element, document, overwrite);
		List<String> keywords = Arrays.asList("Web", "ContentModel");

		StringBuilder sb = new StringBuilder();
		for (String s : keywords) {
			sb.append(s);
			sb.append("|");
        }

		/*
		 * En sondaki | karakterini sil.
		 */
		String keywordsString = sb.deleteCharAt(sb.length() - 1).toString();

		String pattern = String.format("\\b(%s)\\b((\\w|\\s|\\.)+)[{]",
				keywordsString);

		Pattern compile = Pattern.compile(pattern);

		String alldocument = document.get();

		String alldocumentWithoutComment = XtextResourceUtil1
				.returnStringWithoutComments(alldocument);
		java.util.regex.Matcher matcher = compile
				.matcher(alldocumentWithoutComment);
		final List<String> contentUnitNames = new ArrayList<String>();
		while (matcher.find()) {
			String kelime = matcher.group(2).trim();
			contentUnitNames.add(kelime);

		}

		((IXtextDocument) document).
				modify(new IUnitOfWork<Void, XtextResource>() {

					@Override
					public java.lang.Void exec(XtextResource state)
							throws Exception {
						int index = 0;
						ContentModel mymodel = (ContentModel) state
								.getContents().get(0);
						// System.out.println(mymodel.getName());
						if (mymodel.getDisplayName() == null
								|| mymodel.getDisplayName().equals(""))
							mymodel.setDisplayName(contentUnitNames.get(index));
						mymodel.setName(contentUnitNames.get(index).trim()
								.replace(" ", ""));
						index++;
						

						Web rootWeb = mymodel.getOwnedWeb();
                       
						if (rootWeb.getDisplayName() == null
								|| rootWeb.getDisplayName().equals("")){
							rootWeb.setDisplayName(contentUnitNames.get(index));
						rootWeb.setName(contentUnitNames.get(index).trim()
								.replace(" ", ""));
                         String guid =rootWeb.getGuID();
                         sitepermission6.loadForCreateSitePermission(contentUnitNames.get(index),guid);
                     
                         
                         
                         
                         /* SitePermission s=sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),
						guid);
                       sitepermission6.loadAndAddSitePermission(rootWeb, s);
                         
                        rootWeb.setSitePermission(s);*/
					
					
						}
						index++;
						// System.out.println(index);

						
                       // Webleri dolas
						EList<Web> ownedwebs = rootWeb.getOwnedWeb();
						for (Iterator<Web> iterator6 = ownedwebs.iterator(); iterator6
								.hasNext();) {
							Web w = (Web) iterator6.next();
							index = setRecursivelyWebsDisplayName(w, index,
									contentUnitNames);
						}

						

						return null;

					}

				});

		super.doSaveDocument(monitor, element, document, overwrite);
	}

	public  int setRecursivelyWebsDisplayName(Web web, int index,
			List<String> contentUnitNames) {

		if (web.getDisplayName() == null || web.getDisplayName().equals("")){
			web.setDisplayName(contentUnitNames.get(index));
		web.setName(contentUnitNames.get(index).trim().replace(" ", ""));
		// System.out.println(web.getName());
		String guid =web.getGuID();
		//EObject root =web.eContainer();
	    //SitePermission s= SitePermissionUtil.createDefaultSitePermission(contentUnitNames.get(index),guid);
		//sitepermission6.loadForCreateSitePermission(contentUnitNames.get(index),guid);
		// System.out.println( s);
		sitepermission6.loadForCreateSitePermission(contentUnitNames.get(index),guid);
		
		/*SitePermission s=sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),
				guid);
		sitepermission6.loadAndAddSitePermission(web, s);
		 web.setSitePermission(web.getSitePermission());*/
	   }
		index++;


		if (!web.getOwnedWeb().isEmpty()) {

			EList<Web> webs = web.getOwnedWeb();

			for (Iterator<Web> iterator = webs.iterator(); iterator.hasNext();) {
				Web w = (Web) iterator.next();
				// System.out.println(w);
				index = setRecursivelyWebsDisplayName(w, index,
						contentUnitNames);
			}

		}
		return index;
	}
	

}




But I receive IlegalArgumentException.How Can I use SaveGetRule() method and I do not find related example this topic Sad


Best Regards
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1085189 is a reply to message #1085171] Mon, 12 August 2013 11:22 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

reposting the same doesnt help.
you should override it and bind your own impl.
maybe you have to return null (dont know if this has unwanted side effects)
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1085706 is a reply to message #1085189] Tue, 13 August 2013 04:55 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

How can I bind my own util class:( I didn't find an examples about XtextDocumentProvider.savegetrule() .

in addition, I already override XtextDocumentProvider.getSaveRule.

Best Regards,
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1085719 is a reply to message #1085706] Tue, 13 August 2013 05:11 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

if you already override it you have already bound it.
and binding is 100% straight forward ?!?
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086381 is a reply to message #1085719] Wed, 14 August 2013 02:37 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I override getsaverule() method.
I call my own util class with GertSaveRule().but not enter this function Sad
I debug my code,not enter Sad How can I call my util class? please help me .really I do not understand my problem
My XtextDocumnetProvider class:


public class AutoEdit extends XtextDocumentProvider{
	
	final static List<String> contentUnitNames = new ArrayList<String>();
	
	@Inject
	Sitepermission6  sitepermission6;
	
	@Override
	protected ISchedulingRule getSaveRule(Object element) {
		
	if(element instanceof Web){
		System.out.println("olartıkkkk");
		sitepermission6.loadForCreateSitePermission(((Web) element).getName().toString(),((Web) element).getGuID().toString());
		
	}
		
		return super.getSaveRule(element);
	}
	
	@Override
	protected void doSaveDocument(IProgressMonitor monitor, Object element,
			IDocument document, boolean overwrite) throws CoreException {
		super.doSaveDocument(monitor, element, document, overwrite);
		List<String> keywords = Arrays.asList("Web", "ContentModel");

		StringBuilder sb = new StringBuilder();
		for (String s : keywords) {
			sb.append(s);
			sb.append("|");
        }

		/*
		 * En sondaki | karakterini sil.
		 */
		String keywordsString = sb.deleteCharAt(sb.length() - 1).toString();

		String pattern = String.format("\\b(%s)\\b((\\w|\\s|\\.)+)[{]",
				keywordsString);

		Pattern compile = Pattern.compile(pattern);

		String alldocument = document.get();

		String alldocumentWithoutComment = XtextResourceUtil1
				.returnStringWithoutComments(alldocument);
		java.util.regex.Matcher matcher = compile
				.matcher(alldocumentWithoutComment);
		final List<String> contentUnitNames = new ArrayList<String>();
		while (matcher.find()) {
			String kelime = matcher.group(2).trim();
			contentUnitNames.add(kelime);

		}

		((IXtextDocument) document).
				modify(new IUnitOfWork<Void, XtextResource>() {

					@Override
					public java.lang.Void exec(XtextResource state)
							throws Exception {
						int index = 0;
						ContentModel mymodel = (ContentModel) state
								.getContents().get(0);
						// System.out.println(mymodel.getName());
						if (mymodel.getDisplayName() == null
								|| mymodel.getDisplayName().equals(""))
							mymodel.setDisplayName(contentUnitNames.get(index));
						mymodel.setName(contentUnitNames.get(index).trim()
								.replace(" ", ""));
						index++;
						

						Web rootWeb = mymodel.getOwnedWeb();
                       
						if (rootWeb.getDisplayName() == null
								|| rootWeb.getDisplayName().equals("")){
							rootWeb.setDisplayName(contentUnitNames.get(index));
						rootWeb.setName(contentUnitNames.get(index).trim()
								.replace(" ", ""));
                         String guid =rootWeb.getGuID();
                        
                         }
						index++;
						// System.out.println(index);

						
                       // Webleri dolas
						EList<Web> ownedwebs = rootWeb.getOwnedWeb();
						for (Iterator<Web> iterator6 = ownedwebs.iterator(); iterator6
								.hasNext();) {
							Web w = (Web) iterator6.next();
							index = setRecursivelyWebsDisplayName(w, index,
									contentUnitNames);
						}

						

						return null;

					}

				});

		super.doSaveDocument(monitor, element, document, overwrite);
	}

	public  int setRecursivelyWebsDisplayName(Web web, int index,
			List<String> contentUnitNames) {

		if (web.getDisplayName() == null || web.getDisplayName().equals("")){
			web.setDisplayName(contentUnitNames.get(index));
		web.setName(contentUnitNames.get(index).trim().replace(" ", ""));
		// System.out.println(web.getName());
		String guid =web.getGuID();
		//EObject root =web.eContainer();
	   
	   }
		index++;


		if (!web.getOwnedWeb().isEmpty()) {

			EList<Web> webs = web.getOwnedWeb();

			for (Iterator<Web> iterator = webs.iterator(); iterator.hasNext();) {
				Web w = (Web) iterator.next();
				// System.out.println(w);
				index = setRecursivelyWebsDisplayName(w, index,
						contentUnitNames);
			}

		}
		return index;
	}
	

}





Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086386 is a reply to message #1086381] Wed, 14 August 2013 02:43 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

i thought you knew how to use Guice by this time !?!

	public Class<? extends TheClassOrInterfaceIWantToChange> bindTheClassOrInterfaceIWantToChange() {
		return MyImplementationOfTheClassOrInterfaceIWantToChange.class;
	}
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086392 is a reply to message #1086386] Wed, 14 August 2013 02:48 Go to previous messageGo to next message
Eclipse UserFriend
you may debug org.eclipse.ui.texteditor.SaveOperation.getSchedulingRule()
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086398 is a reply to message #1086392] Wed, 14 August 2013 02:55 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I bind my class in MyDslUIModule class.

public Class<? extends XtextDocumentProvider> bindDocumentProvider() {
return AutoEdit.class;
}

but I do not understand Sad

Quote:
you may debug org.eclipse.ui.texteditor.SaveOperation.getSchedulingRule()

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086402 is a reply to message #1086398] Wed, 14 August 2013 02:57 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

I debug ISchedulingRule getSaveRule(Object element) method but not entered not called Sad
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086406 is a reply to message #1086402] Wed, 14 August 2013 03:03 Go to previous messageGo to next message
Eclipse UserFriend
then hangle through the references to see why it is not called or the scheduling rule is build somenow without it. i have no idea.
is your doSaveDocument called?
org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(boolean, boolean, IRunnableWithProgress) ???
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086407 is a reply to message #1086406] Wed, 14 August 2013 03:04 Go to previous messageGo to next message
Eclipse UserFriend
org.eclipse.ui.texteditor.AbstractDocumentProvider.executeOperation(DocumentProviderOperation, IProgressMonitor)
....

at such advanved things nobody has done before ....
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086410 is a reply to message #1086407] Wed, 14 August 2013 03:08 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

My doSaveDocument meyhod is called .
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086411 is a reply to message #1086410] Wed, 14 August 2013 03:09 Go to previous messageGo to next message
Eclipse UserFriend
Hi

as said before on such advanced stuff you have to digg around yourself and find out about the call stack and stuff yourself.
i am sure even Sebastian did not do such a thing before.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086415 is a reply to message #1086411] Wed, 14 August 2013 03:11 Go to previous messageGo to next message
Eclipse UserFriend
and btw if i set a breakpoint at org.eclipse.ui.editors.text.FileDocumentProvider.getSaveRule(Object)
it gets called if i save a file.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086418 is a reply to message #1086410] Wed, 14 August 2013 03:17 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I debug it ente if condition but sitepermission6.loadForCreateSitePermission(((Web) element).getName().toString(),((Web) element).getGuID().toString()); not enter this line (skip this line)
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086429 is a reply to message #1086418] Wed, 14 August 2013 03:36 Go to previous messageGo to next message
Eclipse UserFriend
sorry you do not what you are told.
you should not call your code there but change getSaveRule to return something
meaningful to eclipse job scheduling (i would try to return null or
the same thing for both files you try to change)
have a loot at the debugger. you wont get an eobject as parameter.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086563 is a reply to message #1086429] Wed, 14 August 2013 07:06 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I will try getSaveRule.

@Override
protected ISchedulingRule getSaveRule(Object element) {

return super.getSaveRule(element);
}

elements retuns :org.eclipse.ui.part.FileEditorInput(/deneme/denemeCT.mydsl)

How can I reach my Web element's name .Really I do not understand Sad How can I use my util class in the getSaveRule.Sory I ask a lot of question but I don't find resource or example Sad
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086588 is a reply to message #1086563] Wed, 14 August 2013 07:49 Go to previous messageGo to next message
Eclipse UserFriend
hi

first: wat happens if you return null?
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086589 is a reply to message #1086588] Wed, 14 August 2013 07:50 Go to previous messageGo to next message
Eclipse UserFriend
and you do not use your util there. or the project and not the file?

[Updated on: Wed, 14 August 2013 07:51] by Moderator

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086628 is a reply to message #1086588] Wed, 14 August 2013 09:05 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

What should return null? GetSaveRule method? I do not understand this point? Sad

Christian Dietrich wrote on Wed, 14 August 2013 14:49
hi

first: wat happens if you return null?

[Updated on: Wed, 14 August 2013 09:05] by Moderator

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086631 is a reply to message #1086628] Wed, 14 August 2013 09:07 Go to previous messageGo to next message
Eclipse UserFriend
@Override
protected ISchedulingRule getSaveRule(Object element) {

return null;
}
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086867 is a reply to message #1086631] Wed, 14 August 2013 17:14 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I solved my problem, I return null
@Override
protected ISchedulingRule getSaveRule(Object element) {

return null;
}

My problem is solved thank you very much really Smile

But I ask one question :

Now,I created SitePermission in the other editor (I do not have a problem) but I want to give automatically cross reference for Web's sitePermission attribute BUT
I receive an error Sad
Save Failed
No EObjectDescription could be found in Scope Web.sitePermission for UserModel'UM'.sitePermissions[8]->SitePermission'EEEEE'
Semantic Object: ContentModel'CT'.ownedWeb->Web'EEEEE

I use crossreference in the Web's sitePermission attribute.I want to do automatically reference for sitePermission.

in the grammar :

Web returns Web:
'Web'
	name=QualifiedName
	'{'  'guID' '=' guID=STRING
		'displayName' '=' displayName=STRING
		('description' '=' description=STRING)?
		('sitePermission' '=' sitePermission = [user::SitePermission|QualifiedName])?
		('Webs' '{' ownedWeb+=Web (ownedWeb+=Web)* '}' )?
	'}';



I share my related code :

related part :SitePermission s= sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
sitepermission6.loadForCreateSitePermission(rootWeb, s);
rootWeb.setSitePermission(s);

if I use rootWeb.setSitePermission(s); I receive

No EObjectDescription could be found in Scope Web.sitePermission for UserModel'UM'.sitePermissions[8]->SitePermission'EEEEE'
Semantic Object: ContentModel'CT'.ownedWeb->Web'EEEEE error Sad

how can I give cross reference ?


public class AutoEdit extends XtextDocumentProvider{
	
	final static List<String> contentUnitNames = new ArrayList<String>();
	
	@Inject
	SitePermission7  sitepermission6;
	
	@Override
	protected ISchedulingRule getSaveRule(Object element) {
	
	return null;
		
	
	}
	
	@Override
	protected void doSaveDocument(IProgressMonitor monitor, Object element,
			IDocument document, boolean overwrite) throws CoreException {
		super.doSaveDocument(monitor, element, document, overwrite);
		List<String> keywords = Arrays.asList("Web", "ContentModel");

		StringBuilder sb = new StringBuilder();
		for (String s : keywords) {
			sb.append(s);
			sb.append("|");
        }
		
		

		/*
		 * En sondaki | karakterini sil.
		 */
		String keywordsString = sb.deleteCharAt(sb.length() - 1).toString();
        
		String pattern = String.format("\\b(%s)\\b((\\w|\\s|\\.)+)[{]",
				keywordsString);

		Pattern compile = Pattern.compile(pattern);

		String alldocument = document.get();

		String alldocumentWithoutComment = XtextResourceUtil1
				.returnStringWithoutComments(alldocument);
		java.util.regex.Matcher matcher = compile
				.matcher(alldocumentWithoutComment);
		final List<String> contentUnitNames = new ArrayList<String>();
		while (matcher.find()) {
			String kelime = matcher.group(2).trim();
			contentUnitNames.add(kelime);

		}

		((IXtextDocument) document).
				modify(new IUnitOfWork<Void, XtextResource>() {

					@Override
					public java.lang.Void exec(XtextResource state)
throws Exception {
int index = 0;
ContentModel mymodel = (ContentModel) state
								.getContents().get(0);
	
if (mymodel.getDisplayName() == null
								|| mymodel.getDisplayName().equals(""))
							mymodel.setDisplayName(contentUnitNames.get(index));
						mymodel.setName(contentUnitNames.get(index).trim().replace(" ", ""));
index++;
Web rootWeb = mymodel.getOwnedWeb();
                       
if (rootWeb.getDisplayName() == null
								|| rootWeb.getDisplayName().equals("")){
							rootWeb.setDisplayName(contentUnitNames.get(index));
						rootWeb.setName(contentUnitNames.get(index).trim().replace(" ", ""));
String guid =rootWeb.getGuID();
     SitePermission s=  sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
    sitepermission6.loadForCreateSitePermission(rootWeb, s);
                          rootWeb.setSitePermission(s);
  }
	index++;
// Webleri dolas
EList<Web> ownedwebs = rootWeb.getOwnedWeb();
for (Iterator<Web> iterator6 = ownedwebs.iterator(); iterator6.hasNext();) {
	Web w = (Web) iterator6.next();
	index = setRecursivelyWebsDisplayName(w, index,contentUnitNames);
						}

						

						return null;

					}

				});

		super.doSaveDocument(monitor, element, document, overwrite);
	}

	public  int setRecursivelyWebsDisplayName(Web web, int index,
			List<String> contentUnitNames) {

		if (web.getDisplayName() == null || web.getDisplayName().equals("")){
			web.setDisplayName(contentUnitNames.get(index));
		web.setName(contentUnitNames.get(index).trim().replace(" ", ""));
		
		String guid =web.getGuID();
		SitePermission s=   sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
		    sitepermission6.loadForCreateSitePermission(web, s);
		    web.setSitePermission(s);
		
		
	   }
		index++;


		if (!web.getOwnedWeb().isEmpty()) {

			EList<Web> webs = web.getOwnedWeb();

			for (Iterator<Web> iterator = webs.iterator(); iterator.hasNext();) {
				Web w = (Web) iterator.next();
				// System.out.println(w);
				index = setRecursivelyWebsDisplayName(w, index,
						contentUnitNames);
			}

		}
		return index;
	}
	

}





Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087116 is a reply to message #1086867] Thu, 15 August 2013 02:40 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

the error message should be clear. it says the stuff you try to reference is not in scope. once more i dislike to see 100
lines of code from your side.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087155 is a reply to message #1087116] Thu, 15 August 2013 04:00 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

to understand my problem i've shared code before:( Sorry
how can I solve this problem? Do you have any suggest?

Best Regards

[Updated on: Thu, 15 August 2013 04:14] by Moderator

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087185 is a reply to message #1087155] Thu, 15 August 2013 04:54 Go to previous messageGo to next message
Eclipse UserFriend
Nope sorry

--
Need training, onsite consulting or any other kind of help for Xtext?
Go visit http://xtext.itemis.com or send a mail to xtext at itemis dot de
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087237 is a reply to message #1087185] Thu, 15 August 2013 06:42 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

well, is it possible Sad
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087243 is a reply to message #1087237] Thu, 15 August 2013 06:51 Go to previous messageGo to next message
Eclipse UserFriend
Did you debug scopeprovider? is the object you try to use in scope?
your example is still way too complex to understand it (i do not have the time to solve your problem in my sparetime)
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087286 is a reply to message #1087243] Thu, 15 August 2013 08:11 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I have two different resource (referenced DSL one to other) .

I have two different dsl :
such as :

Web returns Web:
'Web'
name=QualifiedName
'{' ('sitePermission' '=' sitePermission = [user::SitePermission|QualifiedName])?

SitePermission is defined other dsl :

UserModel returns UserModel:
'UserModel' name = QualifiedName '{'
('sitePermissions' '{' sitePermissions+=SitePermission (sitePermissions+=SitePermission)* '}' )?
'}'
;

I do not understand :the object you try to use in scope.

I use SitePermission Object for referenced automatically.
User must not enter manually.

Related code :
SitePermission s= sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
sitepermission6.loadForCreateSitePermission(rootWeb, s);
rootWeb.setSitePermission(s); // this initialization is give error Sad.

Hence not come qualifiedname. such as UserModel.SP must come but onlly come SP. and I do not give string for setSitePermission already.









Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087292 is a reply to message #1087243] Thu, 15 August 2013 08:24 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

I debug my code ,Not enter scopPerovider class.
exception is inovocationTargetException error and in the SavableHelper class Sad
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087302 is a reply to message #1087292] Thu, 15 August 2013 08:43 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

at this point: rootWeb.setSitePermission(s);
is there 2 resources in the resourceset?

~Christian
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087311 is a reply to message #1087302] Thu, 15 August 2013 09:00 Go to previous messageGo to next message
Eclipse UserFriend
Hi,
Yes, two resource in the resourceset

[Updated on: Thu, 15 August 2013 09:00] by Moderator

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087356 is a reply to message #1087311] Thu, 15 August 2013 10:19 Go to previous messageGo to next message
Eclipse UserFriend
then i have no ide why it is not in scope. maybe the problem is that the second resource is not yet indexed.
but as i said you have to debug scopeprovider for that.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087363 is a reply to message #1087356] Thu, 15 August 2013 10:29 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I add two resource one resourceset .

Resource resource = resourceSet.getResource(URI.createURI(userfile), true);
UserModel model = (UserModel) resource.getContents().get(0);
resourceSet.getResources().add(resource);
model.getSitePermissions().add(s);

really I do not understand this problem Sad
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087372 is a reply to message #1087363] Thu, 15 August 2013 10:48 Go to previous messageGo to next message
Eclipse UserFriend
Hi,

the error says that the object is not in scope.
i dont know if the is an error of scoping or it does not work at all and will never work
you are the first guy who is trying this.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087827 is a reply to message #1087372] Fri, 16 August 2013 02:40 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

http://www.eclipse.org/forums/index.php/t/357707/ I find a related link.My problem is scop.must I write a general scop rule ?
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087838 is a reply to message #1087827] Fri, 16 August 2013 02:59 Go to previous messageGo to next message
Eclipse UserFriend
This depends on your grammar. does it work if you disable the automatics and you do the model file by hand. if you the whole approach doesnt work.
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087858 is a reply to message #1087838] Fri, 16 August 2013 03:35 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I want to reference automatically Sad I try a lots of method but not solved.
is it posible in Xtext?

I am aim is : When user enter CTRL+SPACE ,gets all referenced instance.onlly,I wanted this work do automatically.User musn't select .
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087864 is a reply to message #1087356] Fri, 16 August 2013 03:41 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

How can I debug ScopProvider? I do not write anything and I debug my util class but not enter MyDslScopProvider class already,

Christian Dietrich wrote on Thu, 15 August 2013 17:19
then i have no ide why it is not in scope. maybe the problem is that the second resource is not yet indexed.
but as i said you have to debug scopeprovider for that.

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087879 is a reply to message #1087864] Fri, 16 August 2013 04:15 Go to previous messageGo to next message
Eclipse UserFriend
Simple set a breakpoint in getScope???? (in the superclass) Or in DefaultGlobalScopeProvider?
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1087901 is a reply to message #1087858] Fri, 16 August 2013 04:52 Go to previous messageGo to next message
Eclipse UserFriend
Hi I don't know please create a new topic with a new question. Ask
your business need and how to solve it with xtext

--
Need training, onsite consulting or any other kind of help for Xtext?
Go visit http://xtext.itemis.com or send a mail to xtext at itemis dot de
Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1089976 is a reply to message #1087901] Mon, 19 August 2013 10:38 Go to previous messageGo to next message
Eclipse UserFriend
Hi Christian,

I create a new topic .http://www.eclipse.org/forums/index.php/m/1089496/#msg_1089496
I tried ImportedNamespaceAwareLocalScopeProvider override but not succesfull .
and I load my project.I did not solved still ,I must solved this problem How can I solved ,I do not know .

Best regards,

[Updated on: Mon, 19 August 2013 10:44] by Moderator

Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1089977 is a reply to message #1089976] Mon, 19 August 2013 10:39 Go to previous message
Eclipse UserFriend
second part my sample project .

[Updated on: Mon, 19 August 2013 10:43] by Moderator

Previous Topic:Xtext 2.4.2: Hover / hovering: how (not) to open an external browser while clicking on an anchor
Next Topic:Running validator on all DSL files in workspace?
Goto Forum:
  


Current Time: Mon Oct 27 18:23:18 EDT 2025

Powered by FUDForum. Page generated in 0.13594 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top